Чому шестигранні редактори називаються бінарними редакторами?


84

Шестнадцятковий і двійковий - це дві різні основи. Hex, на моє розуміння, - це просто простіший у використанні та більш зручний варіант двійкової.

Однак я часто чую, що шестигранні редактори - це двійкові редактори. Якщо ви шукаєте "двійковий редактор" в Google, ви отримаєте шестигранні редактори.


3
Hex - дещо читабельне представлення двійкових даних.
Салман А

Відповіді:


188

Двійковий редактор редагує файл у вигляді виконуваного файлу .

Двійковий файл - Вікіпедія

Двійковий файл є комп'ютерним файлом , який не є текстовим файлом. Термін "двійковий файл" часто використовується як термін, що означає "нетекстовий файл" [і], як правило, вважається послідовністю байтів. ... Бінарні файли зазвичай містять байти, які призначені для інтерпретації як щось інше, ніж текстові символи.

Шістнадцятковий редактор являє собою тип довічного редактора , в якому дані представлені в вигляді шестнадцатеричной .

Hex редактор - Вікіпедія

Шістнадцятковий редактор (або двійковий редактор файлів або редактор байт ) є одним з видів комп'ютерної програми , яка дозволяє маніпуляцію фундаментальних двійкових даних, що становлять комп'ютерний файл. Назва "hex" походить від "hexadecimal": стандартне подання для чисел, у яких 16 є основою.


85

Термінологія - це важко. У різних людей є всілякі різні назви речей.

У цьому випадку виявляється, що шістнадцятковий у «шестигранному редакторі» посилається на звичайне для людини читане значення кожного байта, тоді як двійкове в «двійковому редакторі» позначає поняття, що ви дійсно редагуєте файл у байті шару (і комп'ютери зберігають байти у двійковій формі), не враховуючи кодування тексту вищого рівня тощо. Нагадаємо, що файли, які не легко представлені у текстовій формі вищого рівня, називаються "двійковими файлами" або "бінарними файлами" з тієї ж причини.

Технічно не є коректним; вони просто підходять до проблеми називання з різних ракурсів. В особистому записі я хотів би погодитись, що "бінарний редактор" заплутаний на балансі.


58

Дисплей бінарного редактора (у двійковому)

00000000 | 11111011 11111011 11111011 11111011 11110101 11111011 11111011 11111011
00001000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00010000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00011000 | 11110101 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00100000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00101000 | 11111011 11111011 11101111 11111011 11111011 11111011 11111011 11111011
00110000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00111000 | 11111011 11111011 11111011 11101111 11111011 11111011 11111011 11111011
01000000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01001000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01010000 | 11101111 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01011000 | 11101111 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01100000 | 11111011 11111011 11111011 11111011 11111011 11101111 11111011 11111011
01101000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011

Двійковий дисплей редактора (у шістнадцятковій)

00 | fb fb fb fb f5 fb fb fb fb fb fb fb fb fb fb fb
10 | fb fb fb fb fb fb fb fb f5 fb fb fb fb fb fb fb 
20 | fb fb fb fb fb fb fb fb fb fb ef fb fb fb fb fb 
30 | fb fb fb fb fb fb fb fb fb fb fb ef fb fb fb fb 
40 | fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb 
50 | ef fb fb fb fb fb fb fb ef fb fb fb fb fb fb fb 
60 | fb fb fb fb fb ef fb fb fb fb fb fb fb fb fb fb

Це правда, що двійковий редактор повинен дозволяти вам керувати байтами у двійковій формі, але як ви бачите, база 2 занадто мала, щоб давати компактні цифри.

Двійковий як сирий, а не другий

Взагалі кажучи, тоді " двійковий " у двійковому редакторі не відноситься до другої бази, це насправді антонім " текстовий редактор ".
Різниця полягає в тому, що текстові редактори призначені для відображення тексту, тому символи, що не друкуються, нові рядки, контрольні символи, недійсні коди utf-8 та інше, не потребують безпечної обробки.
Сам акт відкриття файлу та негайного його збереження може змінити його (через внутрішні перетворення, відмови редактора).

Бінарні редактори з іншого боку, не намагайтеся надати дані будь-які семантичні дані, і нехай користувач безпечно обробляє їх як потік байтів / біт / слів.

Шістнадцяткові редактори

Ідеальний бінарний редактор знав би всі можливі бінарні формати і дозволяв вам редагувати його, але оскільки кожен може створити свій власний бінарний формат і оскільки вони змінюються дуже часто, марно намагатися підтримувати всі формати.
Найкраще, що редактор міг зробити, - це показати самі байти, а завдяки вже обговореним властивостям бази 16 шістнадцяткові цифри дуже зручні!

Також досвідчений користувач може подумки перевести бін у шістнадцятковий під час його читання.
Налаштування / отримання трохи байта, написаного шістнадцяткою, вимагає абсолютно не більше зусиль, ніж байт, написаний у біні.
Якщо чесно, я знайшов hex простіше, ніж двійкові для читання.


1
Приємні приклади, що показують різницю. Насправді бачити їх пліч-о-пліч змушує шестигранну виглядати так симпатичніше
DrZoo

1
@DrZoo Якщо ви не маєте справу з бітовими полями, то в цьому випадку бінарне представлення набагато приємніше! en.wikipedia.org/wiki/Bit_field .
misha256

6
misha256: якщо чесно, коли я дивлюсь на hex - я бачу двійкове. Я читаю "f", але мій мозок одразу каже "1111". Це як перегляд матриці в компактному вигляді. :)
tdrury

4
+1 за наголос на "Бінарному як сирому, а не другому"
Келвін

5
@tdrury хороший момент, я думаю, через деякий час ви просто починаєте "бачити" те, що вам потрібно бачити, незалежно від того, як це виражено. Ха-ха, матриця! Нагадує хлопця, з яким я ходив до школи, який із задоволенням кодував машинну мову шістнадцятковою чи десятковою і міг вільно конвертувати між ними. Він знав усі оп-коди напам'ять і бачив бітові поля та інші запаковані структури даних, як це була його перша мова. Це були Commodore на 64 дні від уваги (набагато простіші дні), але все ж вражаючий талант.
misha256

15

Чому шестигранні редактори називаються бінарними редакторами?

Підсумок:

Шестнадцятковий редактор використовується для прямого редагування двійкового файлу, показуючи бінарний вміст у шістнадцятковому форматі та дозволяючи змінювати ці шістнадцяткові числа.

Примітки:

  • Hex редактори дозволяють редагувати вміст необроблених даних файлу замість інших програм, які намагаються інтерпретувати дані.

  • Шістнадцяткові редактори, які також називають бінарними редакторами або редакторами байтів.

  • Називати їх бінарними редакторами чи редакторами байтів не дуже правильно, оскільки редактори змінюють шістнадцяткові числа, а не двійкові числа чи байти (звичайно, базові двійкові числа та байти змінюватимуться, якщо файл буде збережено)

Чому ми редагуємо двійкове використання шістнадцятковим?

Легше безпосередньо переглядати або редагувати / змінювати двійкові файли, відображаючи дані у шістнадцятковій формі та змінюючи шістнадцяткові значення.

  • Один зручний спосіб подання двійкових чисел - це використання шістнадцяткових знаків.

  • Історично комп'ютери програмувались мовою складання, де код записувався за допомогою інструкцій процесора та мета-висловлювань (різноманітно відомих як директиви, псевдоінструкції та псевдооперації), коментарі та дані.

    • Код переводиться у двійковий код за допомогою асемблера. Потім двійковий код може бути завантажений у процес і виконаний.

    • Без вихідного коду легше змінювати програму безпосередньо за допомогою редактора, який відображає програму у шістнадцятковій, а не у двійковій формі.

  • Бінарний код легше читається людьми при перетворенні в шістнадцятковий.

    Наприклад, яку пару чисел простіше запам'ятати чи прочитати комусь іншому?

    10110000 01100001
    

    Або

    B0 61
    
  • Кожна шістнадцяткова цифра представляє чотири двійкові цифри (біт). Одна шістнадцяткова цифра являє собою нібл, що становить половину октету чи байта (8 біт).

    Наприклад, значення байтів можуть становити від 0 до 255 (десяткові), але можуть бути більш зручно представлені у вигляді двох шестидесяткових цифр у діапазоні від 00 до FF.

  • Шістнадцятковий також зазвичай використовується для представлення адрес пам'яті комп'ютера.


3
Також зауважте, що, хоча Base 64 може здатися запам'ятовувати ще простіше, ми дотримуємось Hex, оскільки вона має приємну властивість відображення 2 символів ⇒ 1 байт.
PythonNut

9

Відповідно до декількох мов програмування та конвенцій операційної системи, існують два типи файлів:

  • текстові файли, що складаються з набору текстових рядків, кожен рядок складається з набору символів для друку (включаючи деякі контрольні символи) і закінчується кінцем рядків
  • бінарні файли, що містять довільний набір байтів, включаючи нульовий байт, який заборонений у текстовому файлі.

Текстові редактори можуть відкривати текстові файли, тоді як двійкові редактори не мають обмежень щодо типу файлів, які вони обробляють.

Факт, що двійкові редактори часто представляють і дозволяють вводити дані в шістнадцятковий раз, є лише зручністю (вони часто відображають і дозволяють також замінювати символи ascii), лише відображення даних у чистому двійковому форматі зробить дані менш розбірливими.

Популярний бінарний редактор називається HexEdit .

введіть тут опис зображення

Він справедливо вважає себе і двійковим редактором, і шестнадцятковим редактором:

введіть тут опис зображення

Існує навіть опція не відображати дані у шістнадцятковій формі, а лише текст

введіть тут опис зображення


5

Файли більшості комп'ютерів, якщо вони є, є 8-бітовими байтами . Зазвичай це абстракція, з якою працює, безпосередньо під час редагування файлу.

Звичайно, є привід насправді редагувати окремі біти даних, але не часто. Звичайні операції на рівні бітів, такі як встановлення біта 7, в будь-якому випадку легко виконати з шістнадцятковою формою - 1000 0000 base2 = 80 base16 , тому якщо значення шістнадцяткових значень нижче 80 base2 біт 7 буде зрозумілим, а додавання 8 base16 встановить це.

Інші причини, чому hex сильніше асоціюється з цим видом діяльності:

  • Шістнадцяткові значення легше розпізнати при візуальному скануванні відомих значень. Наприклад, 20 base16 = 32 - це простір ASCII, але те саме значення 0010 0000 base2 не так легко розпізнати як таке серед потоку інших демпінгових значень.

  • Старі системи, де вам фактично потрібно було користуватися цим регулярно, мали обмежений простір на екрані (наприклад, 40 стовпців). Монітор ПЗУ Apple IIe - прекрасний приклад, він може скидати пам'ять у шестигранному стані до 40-стовпкового інтегрованого відео, а розширення значень до двійкових на екрані 80x24 швидко позбавить вас від місця. Для цих старих систем також простіше писати підпрограми для перетворення введеного ASCII назад у потрібні значення. Важливо, коли 4K оперативної пам’яті вважалося багато пам’яті, а системи, можливо, мали лише стільки ПЗУ.

  • Слово "шістнадцятковий" звучить краще, коротше і простіше набрати.


5

Коли люди користуються шістнадцятковою формою, вони зазвичай думають у двійковій формі та використовують шістнадцяткову форму як скорочення.

Шістнадцять - це сила 2. Вісім - це також сила двох. Таким чином, 16 та 8 використовуються для скорочення бінарних позначень. Ручне перетворення між бінарними та базовою потужністю двох є простим. Просто згрупуйте біти разом за розміром, зазначеним цільовою базою, а потім використовуйте відповідну цифру.

База 8, восьмигранна, була популярною для багатьох ранніх комп'ютерів, саме тому Unix має odкоманду скидання восьмеричного вікна. Кожна восьмизначна цифра представляє одночасно 3 біти. Але це було незручно для машин на базі 8-бітових байтів.

Шестнадцятковий, шістнадцятковий - короткий, 16, являє собою 4 біти на цифру. Це набагато частіше представлення в наші дні.


3

Це стосується того, як комп'ютери зберігають інформацію.

На базовому рівні комп'ютери використовують 0і 1представляють дані, вони називаються бітами. Вісім бітів, згрупованих разом, - це байт. Шістнадцятковий - це база 16, тобто 16 символів ( 0-9, A-F). Для зберігання символу потрібно 8 біт або 1 байт.

Отже, шістнадцяткове число 13( 19у десятковій) таке саме, як 0001 0011у двійковому. Шістнадцять легше читати, ніж двійкові.


2

Найдавніші бінарні редактори, яких я знаю, також були розбиральниками. Це означає, що можливість редагування була побічним продуктом для розбирання та виправлення виконуваного двійкового файлу.

Хороший приклад такого застосування - Hiew.

Зібраний код (інструкція асемблера) часто представлений у вигляді шістнадцяткових рядків. Я думаю, саме тут виникає сучасна плутанина. Люди просто не знають, з чим мають справу.


2

Будь-який компільований, запущений файл (наприклад, деякіfile.exe, наприклад, в Windows) іноді називають "двійковим", оскільки він складений в код машинного рівня, правильний на двійковому рівні, який повинен виконуватись процесором безпосередньо.

Отже, ви редагуєте двійковий файл. Це просто трапляється відображатись у шістнадцятковій формі, оскільки гексакс корисний для людини.


Так, але багато файлів даних також є двійковими. Вони економлять на просторі та перекладі, коли їх читають відповідною програмою. Крім того, навіть текстові файли часто шифруються або стискаються, роблячи їх бінарними файлами.
Джо

1

Я відповім на ваші запитання буквально.

По-перше, трохи роз’яснення. Ви маєте на увазі, звичайно, шестидесятковий редактор. Шістнадцятковий означає 6, а десятковий означає 10 , тому шістнадцятковий означає 16 . Bi означає 2 . Як ви вже говорили, це дві різні бази, база 16 і база 2, а значить, для визначення шістнадцяткового числа потрібно 16 елементів-заповнювачів і лише два елементи для визначення двійкового числа.

Ти сказав це,

If you actually search for "binary editor" on Google, you get hex editors.

А тепер для ваших запитань,

Why is that? 

Це буквальна частина. Google повертає те, що більшість людей вважає задовільними результатами їх пошуку. Їх алгоритми машинного навчання пов'язують рядки "шістнадцятковий" і "шістнадцятковий" з "двійкові" в контексті рядка "редактор". Оскільки більшість користувачів були задоволені "шестигранним" "редактором" після того, як вони шукали "бінарний" "редактор", це ми отримуємо. Це не має сенсу інакше.

What is the connection?

Буквально знову, цього немає, оскільки Google не повертає жодного сенсу. Google не знає різниці між двійковим та шістнадцятковим, він може лише підрахувати, як люди користуються їх пошуковою системою.

Якщо ви запитували про реальний зв’язок між шістнадцятковим і двійковим, то повертаючись до мого уточнення вище, один шістнадцятковий елемент кодує 16 можливостей або 4 біта, але бінарний елемент кодує 2 можливості або 1 біт. Для кодування 8 біт інформації в байті нам потрібні два шістнадцяткові елементи або 8 бінарних елементів. Таким чином, ви можете бачити, що двійкові або шістнадцяткові редактори можуть використовуватися взаємозамінно, оскільки вони представляють однакові дані, лише в різних видах.


1

Їх називають "бінарними", тому що вони дозволяють змінювати окремі біти.

UI зазвичай працює в шістнадцятковому за замовчуванням , тому що це більш зручно - наприклад , ffffe0007d13e650 займає менше місця на екрані , ніж 1111111111111111111000000000000001111101000100111110011001010000. (Це фактична адреса проблеми налагодження, а не сформований приклад.) Простіше "бачити" речі, такі як символи ascii або Unicode, у шістнадцятковому коді.

Але більшість з них перейде на показ бінарних бітів, якщо ви дійсно цього хочете.

(Чому ми їдемо по парку, а паркуємося на проїжджій частині? Це просто слова. Англійська мова часто дивна.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.