Двоичный файл — последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных цифр.

Двоичные файлы противопоставляются текстовым файлам. При этом с точки зрения технической реализации на уровне аппаратуры, текстовые файлы являются видом двоичных файлов. Поэтому под определение «двоичный файл» подходит любой файл.

В целом данный термин представляет собой меру отношения потребителя бинарного файла и самого файла. Если потребитель знает структуру и правила, по которым он способен преобразовать данный файл к более высокоуровневому, то он не является для него бинарным. Например, исполняемые файлы являются бинарными для пользователя компьютера, но при этом не являются таковыми для операционной системы.[источник не указан 2358 дней]

Обработка править

В операционных системах и библиотеках программирования может быть предусмотрена специальная обработка текстовых файлов в отличие от бинарных. Например, в системах MS-DOS и Windows библиотека стандартного ввода-вывода языка C реализована таким образом, что после открытия файла в «текстовом» режиме последовательность символов \r\n читается как один символ \n, а операция записи, наоборот, записывает символ \n в файл в виде последовательности \r\n. Кроме того, символ ^Z там рассматривается как конец текстового файла, поэтому при чтении файла в текстовом режиме всё, что идёт после этого символа, игнорируется.

Но если файл был открыт в «двоичном» режиме, то чтение и запись происходит строго побайтно, без каких бы то ни было преобразований.

Визуализация править

Для наглядного представления двоичного файла он разбивается на куски равного размера, представляемые в виде чисел, записываемых, обычно, в шестнадцатеричной системе, иногда в восьмеричной, двоичной или десятичной. Означенный размер куска может быть равен одному октету, а также двум или четырём (в случае разбиения на куски по несколько октетов применяется характерный для выбранной системы порядок байтов). Зависимость диапазона представляемых чисел от размера куска показана в таблице:

 октетов   кол-во бит   шестнадцатеричное   восьмеричное  десятичное
 беззнаковое 
десятичное
знаковое
1 8 00

FF
000

377
0

255
-128

127
2 16 0000

FFFF
000000

177777
0

65535
-32768

32767
4 32 00000000

FFFFFFFF
00000000000

37777777777
0

4294967295
-2147483648

2147483647

Нередко, помимо числовых значений байт, выводятся также символы кодовой страницы, например ASCII. Нижеследующий пример показывает т. н. классический дамп (пооктетное шестнадцатеричное представление по 16 байт в строке, с печатными ASCII-символами справа) начала PNG-файла логотипа Википедии:

00000000  89 50 4e 47 0d 0a 1a 0a  00 00 00 0d 49 48 44 52  |.PNG........IHDR|
00000010  00 00 00 87 00 00 00 a0  08 03 00 00 00 11 90 8f  |................|
00000020  b6 00 00 00 04 67 41 4d  41 00 00 d6 d8 d4 4f 58  |.....gAMA.....OX|
00000030  32 00 00 00 19 74 45 58  74 53 6f 66 74 77 61 72  |2....tEXtSoftwar|
00000040  65 00 41 64 6f 62 65 20  49 6d 61 67 65 52 65 61  |e.Adobe ImageRea|
00000050  64 79 71 c9 65 3c 00 00  03 00 50 4c 54 45 22 22  |dyq.e<....PLTE""|
00000060  22 56 56 56 47 47 47 33  33 33 30 30 30 42 42 42  |"VVVGGG333000BBB|
00000070  4b 4b 4b 40 40 40 15 15  15 4f 4f 4f 2c 2c 2c 3c  |KKK@@@...OOO,,,<|
00000080  3c 3c 3e 3e 3e 3a 39 39  04 04 04 1d 1d 1d 35 35  |<<>>>:99......55|
00000090  35 51 50 50 37 37 37 11  11 11 25 25 25 0d 0d 0d  |5QPP777...%%%...|
000000a0  27 27 27 1a 1a 1a 38 38  38 2a 2a 2a 08 08 08 20  |'''...888**...  |
000000b0  20 20 17 17 17 2e 2e 2e  13 13 13 bb bb bb 88 88  |  ..............|

Инструменты править

Для визуализации править

Для редактирования править

  • HEX-редактор
    • beye (для всех операционных систем, свободная программа)
    • hiew (для DOS, Microsoft Windows, Windows NT)
    • WinHex (для Windows)
    • Sublime Text
    • И другие

Литература править

  • Webster’s New World Dictionary of Computer Terms, 4th. Ed, Prentice Hall, NY, 1992. ISBN 0-671-84651-5
  • Леонтьев Б. К. Форматы файлов Microsoft Windows XP: Справочник, М.: ЗАО «Новый издательский дом», 2005. ISBN 5-9643-0059-6

См. также править