Когда я открываю бинарный файл в vim, я вижу мнемонику вместо 0s
и 1s
. Я полагаю, это связано с тем, что vim по умолчанию открывает файл в режиме ASCII. Правильно ли я понимаю? Каков формат кодирования двоичного файла? Это UTF-8? Я знаю, что xxd
выполнит шестнадцатеричный дамп двоичного файла в Vim
. Однако я хотел бы знать, почему vim или любой текстовый редактор не отображает двоичный файл как 0s
и 1s
.
Во всех современных операционных системах любой двоичный файл будет храниться и обрабатываться как последовательность байтов (, то есть 8 -битовых групп ). Фактически, любой текстовый файл также будет храниться таким образом.
В большинстве случаев текстовые редакторы (или редакторы двоичных файлов )предназначены для отображения байтов, поскольку они являются единицей хранения. Если я хочу отредактировать двоичный файл, чтобы он содержал другое значение, для меня полезнее редактировать один байт за раз, а не несколько битов за раз. Например, если я редактирую файл данных, чтобы изменить значение с 1234 на 5678, гораздо проще найти байты 04 d2
или d2 04
, а затем поменять их местами на 16 2e
или 2e 16
, чем на самом деле. чтобы найти некоторую серию битов в потоке, который не выровнен по байтам.
Vim, как и многие другие текстовые редакторы, будет открывать бинарные файлы в режиме, использующем одинарную -байтовую кодировку (в Vim, обычноlatin1
). Какая кодировка в нем используется, не очень интересно, потому что кодировки символов используются для текстовых данных, то есть данных, которые представляют что-то понятное человеку, а не двоичные данные. Цель использования одиночной байтовой кодировки -состоит в том, что любая последовательность байтов допустима и что при загрузке или сохранении не происходит никаких изменений.
Наконец, имейте в виду, что даже двоичные файлы обычно имеют некоторую структуру, даже если она не так очевидна, как текстовые файлы. Например, файл ELF будет начинаться с байта 0x7f, а затем символов ELF
.Затем он будет содержать байты для класса (32 -бит или 64 -бит ), порядка байтов, версии и ABI. Они просто не в формах, которые легко читаются, если вы не знакомы с форматом, в отличие от текстовых файлов.