Что такое шестнадцатеричный редактор (и когда он вам действительно нужен)
Вам сказали «проверь это в шестнадцатеричном редакторе» или вы искали шестнадцатеричный просмотрщик и попали сюда, не будучи до конца уверены, что это такое. Это нормально. Шестнадцатеричный редактор представляет собой программу, которая показывает сырое содержимое файла, байт за байтом, вместо того чтобы пытаться истолковать его как документ, изображение или таблицу. Это самый близкий способ увидеть ровно то, что хранится на диске.
Почему именно шестнадцатеричный
Файл, любой файл, представляет собой просто последовательность байтов, а каждый байт является числом от 0 до 255. Вы могли бы отображать эти числа в десятичном виде, но от 0 до 255 занимает до трёх цифр и не выравнивается ровно. Вы могли бы отображать их в двоичном виде, но один байт занимает восемь цифр из единиц и нулей, что тяжело просматривать глазом. Шестнадцатеричная система (основание 16, с цифрами 0-9 и буквами A-F) даёт компромисс: каждый байт помещается ровно в два символа, от 00 до FF, так что ряд байтов выстраивается в аккуратную, легко просматриваемую сетку. Вот и вся причина, по которой «hex» стал стандартом, а не десятичный или двоичный вид. Это выбор ради читаемости, а не техническое требование.
На что вы на самом деле смотрите
Откройте любой файл в шестнадцатеричном редакторе, и вы увидите три вещи бок о бок для одних и тех же данных:
- Смещение: как далеко в файл вы зашли, обычно показано в самом шестнадцатеричном виде, так что вы можете позже вернуться к конкретной позиции.
- Шестнадцатеричные байты: собственно данные, два символа на байт, сгруппированные в ряды (обычно по 16 байтов в ряду).
- Текстовый (ASCII) вид: те же байты, заново истолкованные как символы, для той части файла, которая оказывается читаемым текстом. Нетекстовые байты обычно показаны как точка-заполнитель.
Этот третий столбец и есть причина, по которой пути к файлам, метки и строки версий часто видны даже в файлах, которые в основном состоят из двоичных данных: любой встроенный текст проявляется в этом столбце, даже если файл в целом не текстовый.
Когда он вам действительно понадобится
Большинство людей проживают всю жизнь, ни разу не открыв шестнадцатеричный редактор, и это совершенно нормально. Ситуации, где он по-настоящему правильный инструмент, конкретны:
- Расширение файла не совпадает с его реальным содержимым. Кто-то переименовал
.zipв.doc, или вы не уверены, что файл.dbдействительно база данных. Первые несколько байтов большинства форматов представляют собой характерную сигнатуру (PNG начинается с89 50 4E 47, ZIP с50 4B), и шестнадцатеричный вид подтверждает это за секунды. - Файл повреждён, и вы хотите узнать как. Обрезанная загрузка, плохая передача, перезаписанный заголовок. Взгляд на сырые байты говорит, в начале ли повреждение, в конце или разбросано.
- Вы отлаживаете что-то, что читает или пишет двоичные данные, формат файла сохранения, файл конфигурации, сетевой протокол, и вам нужно подтвердить, какие именно байты производятся.
- Вы хотите проверить конкретное значение, например подтвердить, что четыре байта действительно представляют ожидаемый вами размер файла, или проверить метку времени, не доверяя интерпретацию инструменту-«чёрному ящику».
- Любопытство. Немало людей открывают шестнадцатеричный редактор один раз просто чтобы увидеть, как знакомый формат файла выглядит изнутри. Это совершенно законная причина.
Если ничто из этого не описывает то, что вы делаете, шестнадцатеричный редактор вам, вероятно, не нужен, и это нормально. Это специальный инструмент для конкретного рода вопросов.
Что делает шестнадцатеричный редактор хорошим, а не просто рабочим
Когда он вам всё же нужен, инструменты в основном делают одну и ту же базовую работу: показывают байты, дают прокручивать, дают искать. Различия, которые важны, касаются безопасности и ясности, а не количества функций. Hex Fiend представляет собой бесплатный вариант с открытым кодом, к которому большинство пользователей Mac приходят по умолчанию, и он по-настоящему способный, особенно с очень большими файлами. Hexter выбирает более узкий, более осторожный подход: каждый файл открывается только для чтения, так что взгляд на что-то незнакомое несёт нулевой риск, редактирование выступает явным, обратимым шагом, а не состоянием по умолчанию, а у распространённых форматов файлов (PNG, ZIP, Mach-O, WAV, SQLite) структура разбирается автоматически, вместо того чтобы оставлять вам расшифровку заголовков вручную.
Какой из них вам нужен, зависит от того, что вы делаете. Если вы сравниваете два многогигабайтных файла байт за байтом, сравнение в Hex Fiend создано для такого масштаба. Если вам просто нужно подтвердить, что за файл на самом деле, проверить горстку байтов или сделать небольшую, аккуратную правку, не переживая о случайной порче оригинала, это та ситуация, для которой создан Hexter.