Un archivo binario es una secuencia de bytes arbitrarios . El nombre proviene del hecho de que los bytes se componen de bits , es decir, dígitos binarios.
Los archivos binarios se oponen a los archivos de texto . Al mismo tiempo, desde el punto de vista de la implementación técnica a nivel de hardware, los archivos de texto son un tipo de archivos binarios. Por lo tanto, la definición de "archivo binario" se ajusta a cualquier archivo.
En general, este término es una medida de la relación entre el consumidor de un archivo binario y el archivo en sí. Si el consumidor conoce la estructura y las reglas mediante las cuales puede convertir un archivo dado a uno de mayor nivel, entonces no es binario para él. Por ejemplo, los archivos ejecutables son binarios para el usuario de la computadora, pero no son binarios para el sistema operativo .
Los sistemas operativos y las bibliotecas de programación pueden proporcionar un manejo especial de los archivos de texto en lugar de los binarios. Por ejemplo, en los sistemas MS-DOS y Windows, la biblioteca de entrada-salida estándar del lenguaje C se implementa de tal manera que después de abrir un archivo en modo "texto", una secuencia de caracteres \r\nse lee como un solo carácter \n, y una operación de escritura, por el contrario, escribe un carácter \nen el archivo como una secuencia \r\n. Además, el carácter ^Z se trata allí como el final del archivo de texto, por lo que al leer el archivo en modo de texto, se ignora todo lo que sigue a este carácter.
Pero si el archivo se abrió en modo "binario", la lectura y la escritura se realizan estrictamente byte a byte, sin ninguna conversión.
Para representar visualmente un archivo binario, se divide en partes del mismo tamaño, representadas como números, generalmente escritos en hexadecimal , a veces en octal , binario o decimal . El tamaño indicado de una pieza puede ser igual a un octeto , así como a dos o cuatro (en el caso de desdoblamiento en piezas de varios octetos, se utiliza el orden de bytes característico del sistema seleccionado ). La dependencia del rango de números representados en el tamaño de la pieza se muestra en la tabla:
octetos | número de bits | hexadecimal | octales | decimal sin signo |
decimal con signo |
---|---|---|---|---|---|
una | ocho | 00 … FF |
000 … 377 |
0 … 255 |
-128 … 127 |
2 | dieciséis | 0000 … FFFF |
000000 … 177777 |
0 … 65535 |
-32768 … 32767 |
cuatro | 32 | 00000000 … FFFFFFFF |
00000000000 … 37777777777 |
0 … 4294967295 |
-2147483648 … 2147483647 |
A menudo, además de los valores numéricos de los bytes, también se emiten caracteres de página de códigos , como ASCII . El siguiente ejemplo muestra el llamado. volcado clásico (representación hexadecimal de octetos de 16 bytes por línea, con caracteres ASCII imprimibles a la derecha) del inicio del archivo PNG del logotipo de Wikipedia :
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 | ..............|