Почему двоичный код не отображается при открытии двоичного файла в текстовом редакторе?

Почему при открытии двоичного файла в текстовом редакторе не отображается двоичный код? Например, когда я открываю изображение в текстовом редакторе, я вижу некоторые странные символы, а также некоторые читаемые человеком символы; но изображение должно быть закодировано в двоичном формате.

4
задан Sathya
18.05.2023 15:59 Количество просмотров материала 3275
Распечатать страницу

5 ответов

Binary и text данные не разделены: они просто data. Это зависит от интерпретации, которая делает их одним или другим. Если вы откроете двоичные данные (например, файл изображения) в текстовом редакторе, большая их часть не будет иметь смысла, потому что они не соответствуют выбранному толкование (как текст).

что вы называете text это подмножество возможного содержимого файла: данные, набор символов переводит на читаемые символы.

например,ASCII, вы можете видеть, что из 128 "разрешенных" значений, только около половины-буквы и цифры, 30-пунктуация, а остальные символы. Последняя группа просто мало используется в текстовых файлах, и у них нет действительно хорошего текстового представления. Некоторые из них Tab и новая строка символы, где текстовые редакторы уже нужны чтобы проявить творческий подход к их отображению.

некоторые текстовые редакторы могут явно отображать пробелы. Тогда они будут нарисованы как персонажи, в дополнение к их обычным форматирование поведение (которое также является просто толкование этих персонажей).

чистый ASCII интерпретирует только 128 значений. Байты, используемые для хранения этой информации, имеют 256 возможных значений каждый, поэтому половина возможных значений не допускается в ASCII. Те например, используются в региональных кодировках, таких как Latin 1, но в ASCII они не определены. Они не имеют полезного представления в просмотрщике текста, который может обрабатывать только ASCII.


двоичные данные обычно не интерпретируется как текст. Так что в этих файлах все возможные значения байта обычно встречаются. Все остальное было бы расточительно (и именно поэтому вы можете очень хорошо сжимать текст). Форматы файлов изображений сложны, а вы нет обычно их рассматривают как текст, поэтому их не нужно читать.

поскольку нет общей интерпретации данных (набора символов), которая сопоставляет все возможные значения читаемым символам, и поскольку это все равно не имеет большого смысла (поскольку это не читаемый текст), основные части отображаются как тарабарщина.


шестнадцатеричный редактор выбирает другое представление для данных: он отображает каждый байт как два шестнадцатеричное цифр. Это просто другое представления, и одно с легко читаемый набор символов: все 256 возможных значений байта могут быть представлены в виде двух шестнадцатеричных цифр.


некоторые текстовые редакторы могут иметь HEX-редактор режима и некоторые эвристики, которые пытались определить, является ли файл текстовым или двоичным, и автоматически выбирать тот или иной режим. Но это может быть трудно получить право, и это не конкретное свойство файла, который говорит, является ли это один вид или другой.


некоторые FTP-клиенты просят указать, какие окончания файлов используются для текст data. Затем эти программы изменят содержимое файла в соответствии с операционной системой компьютера, к которому вы подключены, так как Windows использует другую последовательность символов конца строки (CR/LF) чем Linux и Unix (включая Mac OS X; LF).

83
отвечен Daniel Beck 2023-05-19 23:47

потому что вы открыли его в text редактор, а не binary editor.

33
отвечен Ignacio Vazquez-Abrams 2023-05-20 02:04

Это все в контексте и интерпретации. Что в вашем компьютере картины повсюду напряжения тока, или намагниченные зоны диска, которые только приобретают смысл когда мы решаем как мы хотим интерпретировать они.

при других обстоятельствах, шаблон низкий-высокий-низкий-низкий-низкий-высокий может означать номер 65, заглавная буква "А", небесно-голубой цвет, что клиент заказал кофе, дата "6 марта" или что-нибудь вообще, действительно.

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

когда вы открываете файл изображения в текстовом редакторе, он обрабатывается как текст. Это очень простой формат, гораздо ближе к тому, что на самом деле происходит в компьютере, но есть еще некоторые интерпретации происходит. В частности, почти каждый шаблон интерпретируется как конкретный символ, некоторые нормальные, такие как A-Z, но и некоторые странные символы. Некоторые шаблоны не отображаются как символы, а рассматриваются как основное форматирование: новая строка, вкладка.

(ситуация немного осложняется такими вещами, как Unicode и текстовые кодировки, такие как UTF-8, но я не буду иметь дело с ними здесь ради простоты.)

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

17
отвечен Andrew Turner 2023-05-20 04:21

в качестве упрощенного примера рассмотрим файл изображения, открытый в текстовом редакторе.

изображение представляет собой простой шахматный шаблон с квадратами шириной 3 пикселя и серой границей 1 пиксель между каждым квадратом. - три черных пикселей, сером границы пикселей, три белых пикселей, сером границы пикселей, повторите.

первая строка в этом изображении будет иметь следующее значение четыре раза:

Black    Black    Black    Gray     White    White    White    Gray
0x000000 0x000000 0x000000 0x7F7F7F 0xFFFFFF 0xFFFFFF 0xFFFFFF 0c7F7F7F

(в Hex, а не в Binary - строка в Binary будет в четыре раза как long-0x7F заменяется на 0b01111111)

Если вы загрузите эту строку данных в текстовый редактор, вы получите следующий текст:

[Nul][Nul][Nul][Nul][Nul][Nul][Nul][Nul][Nul][Del][Del][Del][Blank][Blank][Blank][Blank][Blank][Blank][Blank][Blank][Blank][Del][Del][Del]

это потому, что 0x00-это код ASCII для значения Null, и вам нужно написать это 3 раза, чтобы получить значение для черного пикселя (в 24-битном BMP в любом случае), и у вас есть 3 черных пикселя. Тогда 0x7F-это код ASCII для удаления, и вам нужно это три раза, чтобы получить серый пиксель. 0xFF не является кодом valud ASCII для чего - либо конкретного - даже в расширенном наборе ASCII-и вам нужно написать его 9 раз, чтобы получить 3 белых пикселя. Закончив его, вы получите еще три удаления, чтобы написать серый пиксель.

другой способ показать это, который может быть более полезным объяснением, является обратным примером - что вам нужно записать в файл, чтобы получить нули и единицы при открытии в текстовом редакторе?

коды ASCII для нуля и единицы, конечно! Нуль в текстовом редакторе не хранится как один бит со значением 0, он хранится как 8 бит со значением 0b00110000, или в шестнадцатеричном 0x30

код ASCII для "0" 0x30, а код ASCII для "1" 0x31, поэтому, если вы хотите сохранить шахматный шаблон как нули и единицы, ваш файл будет выглядеть так:

text editor:
10101010
01010101
10101010
01010101

Stored data (ASCII values for '1', '0' and 'new line'):
0x31 0x30 0x31 0x30 0x31 0x30 0x31 0x30 0x0D 0x30 0x31 0x30 0x31 0x30 0x31 0x30 0x31 0x0D 0x31 0x30 0x31 0x30 0x31 0x30 0x31 0x30 0x0D  0x30 0x31 0x30 0x31 0x30 0x31 0x30 0x31

там намного больше, чем это - файлы имеют запуски и остановки и метаданные и все другие виды вещей, но урок takehome и ответ на ваш вопрос:

Если первые 8 бит вашего файла не равны 0b00110000, ваш текстовый редактор не будет писать '0', потому что это ASCII-код символа '0'. Если первые 8 бит вашего файла не равны 0b00110001, ваш текстовый редактор не напишет '1', потому что это ASCII-код символа '1'.

3
отвечен medivh 2023-05-20 06:38

редактор недостаточно умен, чтобы понять, имеет ли смысл какой-либо текст или нет, поэтому он отображает любой файл в виде текста, если специально не указано, что делать иначе, если у него есть эта функция. Как указывали другие, некоторые редакторы имеют функцию отображения hex.

0
отвечен Emilio M Bumachar 2023-05-20 08:55

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх