BinHex , originalmente abreviatura de "binario a hexadecimal", es un sistema de codificación de binario a texto que se usaba en el Mac OS clásico para enviar archivos binarios por correo electrónico . Originalmente una codificación hexadecimal , las versiones posteriores de BinHex son más similares a uuencode , pero combinaban ambas "bifurcaciones" del sistema de archivos de Mac junto con información de archivo extendida. Los archivos BinHexed ocupan más espacio que los archivos originales, pero no se dañarán con software que no sea " limpio de 8 bits ".
Extensión de nombre de archivo | .hqx |
---|---|
Tipo de medio de Internet | aplicación / mac-binhex40 aplicación / mac-binhex aplicación / binhex |
Identificador de tipo uniforme (UTI) | com.apple.binhex-archive |
Historia
TRS-80 BinHex (.hex)
BinHex fue escrito originalmente en 1981 por Tim Mann para TRS-80 , como una versión independiente de un esquema de codificación originalmente integrado en un emulador de terminal popular , ST80-III por Lance Micklus . BinHex se utilizó para enviar archivos a través de los principales servicios en línea como CompuServe , que no eran "limpios de 8 bits" y requerían blindaje ASCII para sobrevivir. Sin embargo, no todos usaban ST-80, por lo que Mann escribió BinHex para permitir que los usuarios de otros emuladores usaran el formato. [1]
El sistema ST-80 original funcionaba convirtiendo el contenido del archivo binario en números hexadecimales , que a su vez estaban codificados como dígitos y letras ASCII . Luego agregó una nueva línea después de cada 60 caracteres. El sistema se hizo muy popular después de que Mann lo subiera al área de archivos TRS-80 de Compuserve . El sistema rápidamente obtuvo la adición de una suma de verificación al final de cada línea para verificar si hay errores. Bill Stockwell convirtió esa versión al compilador BASIC / S, que se ejecutó mucho más rápido que la versión interpretada de Mann. [1]
Los archivos BinHex de la época generalmente tenían la extensión de archivo.hex . Pronto aparecieron puertos para otras plataformas populares de la época, incluido Apple II . CompuServe luego agregó soporte para transferencias de 8 bits y el formato desapareció rápidamente. [1]
Mac BinHex (.hex)
El problema de carga de archivos todavía existía en CompuServe cuando la Mac se lanzó por primera vez en 1984. En abril de 1984, William Davis portó BinHex a la Mac usando Microsoft BASIC para producir una versión que era en gran parte idéntica a las versiones TRS-80 de la misma época. [1] Esta versión solo admitía la codificación de la "bifurcación de datos", ignorando la bifurcación de recursos , lo que significaba que solo podía usarse para archivos de datos. El aumento en el uso del correo electrónico de Internet coincidió aproximadamente con el lanzamiento de Macintosh, y la versión de Davis fue publicada en la lista de correo de Info-Mac por Joel Heller en junio de 1984. Varias versiones más nuevas fueron publicadas durante 1984, resultando en BinHex 3 que podría codificar ambas bifurcaciones.
Yves Lempereur, autor del primer ensamblador para Mac, MacASM, descubrió que para cargar sus archivos en CompuServe tenía que usar BinHex. La versión BASIC era muy lenta, por lo que Lempereur portó BinHex 3 a ensamblador y lo lanzó como BinHex 1.0. El programa era aproximadamente cien veces más rápido que la versión BASIC, y pronto las solicitudes de actualización empezaron a llegar. [2]
BinHex compacto (.hcx)
El BinHex original era un formato bastante simple, uno que no era muy eficiente porque expandía cada byte de entrada en dos, como lo requiere la representación hexadecimal: una codificación de 8 a 4 bits. Para BinHex 2.0, Lempereur utilizó una nueva codificación de 8 a 6 que redujo el tamaño del archivo en un 50%. También aprovechó la oportunidad para ampliar la suma de comprobación de 8 a 16 bits. [2]
Esta nueva codificación utilizó los primeros 64 caracteres de impresión ASCII, incluido el espacio, para representar los datos, [3] de manera similar a uuencode . Aunque la nueva codificación ya no era de naturaleza hexadecimal , se mantuvo el nombre establecido del programa. Los archivos más pequeños eran incompatibles con los más antiguos, por lo que la extensión se convirtió en .hcx , c para compact. La nueva versión reemplazó a las anteriores "de la noche a la mañana". [2]
BinHex 4 (.hqx)
A Lempereur le preocupaban algunas de las características de BinHex, en particular, el uso de una suma de comprobación en lugar de una verificación de redundancia cíclica (CRC) y el hecho de que la información de metadatos en el encabezado estaba en texto sin formato y, por lo tanto, podría corromperse de la misma manera que los datos. [2]
Para resolver todos estos problemas, Lempereur lanzó BinHex 4.0 en 1985, saltándose 3.0 para evitar confusiones con la versión BASIC, ahora muerta. 4.0 primero combinó la bifurcación de datos, la bifurcación de recursos y los metadatos del archivo en un formato común de 8 bits, ejecutó la codificación de longitud de ejecución (RLE) en el resultado para proporcionar algo de compresión, y luego ejecutó la conversión 8-> 6 en el resultado y protegió todo con múltiples CCR. Los .hqx
archivos resultantes eran aproximadamente del mismo tamaño que los .hcx
de, pero mucho más robustos. [2]
BinHex 5
Aproximadamente en el momento en que se lanzó BinHex 4, la mayoría de los servicios en línea comenzaron a admitir protocolos robustos de transferencia de archivos de 8 bits como ZMODEM , y la necesidad de blindaje ASCII desapareció. Sin embargo, esto dejó un problema en la Mac, ya que aún existía la necesidad de codificar las dos bifurcaciones en una.
Un esfuerzo en equipo entre los programadores de comunicaciones de Macintosh, incluido Lempereur, dio como resultado MacBinary . Esto dejó el contenido de las bifurcaciones en su formato original de 8 bits y agregó un encabezado simple para combinarlos en la recepción. Por tanto, los archivos MacBinary eran mucho más pequeños que BinHex. Lempereur lanzó BinHex 5.0, casi idéntico a 4.0 con la excepción de que usó MacBinary para combinar las bifurcaciones antes de ejecutar la codificación de 8 a 6, pero tuvo poco uso, como esperaba. [2]
En Internet , el correo electrónico seguía siendo el método principal para mover archivos. En ese momento, relativamente pocas personas tenían acceso completo a Internet, y los servicios como FTPmail eran la única forma en que muchos usuarios podían descargar archivos. Años más tarde, cuando se conectó por primera vez a Internet, Lempereur se sorprendió al descubrir que BinHex 4.0 seguía siendo extremadamente popular. [2]
Los mismos fines se podrían lograr usando primero MacBinary o AppleSingle para combinar las bifurcaciones, y luego usando Uuencode o Base64 en el archivo resultante, pero ninguna de estas soluciones se volvió popular y BinHex 4.0 sobrevivió hasta finales de la década de 1990. Los archivos de archivos del software clásico de Mac OS todavía están llenos de archivos BinHexed.
Formato de archivo BinHex 4
Al observar el contenido de un archivo BinHex, uno notará que tiene un mensaje generalmente en la primera línea que lo identifica como BinHex, seguido de muchas líneas de 64 caracteres compuestas por letras, números y signos de puntuación aparentemente aleatorios. Aquí hay una muestra de cómo se ve realmente BinHex:
(Este archivo debe convertirse con BinHex 4.0): $ f * TEQKPH # jdCA0d, R0TG! "6594% 8dP8) 3 # 3"! & m! *!% EMa6593K !!% !!! & mFNaKG3, r! *! $ & [Rr $ 3d, BQPZD'9i, R4PFh3! RQ + !! "AV # J # 3! I !! N! @QKUjrU! # 3 '[q3 "& 4 & @ & 483N) f! 3 # Xaj6bV-H8mJ !!! B3! N! 0"! *! $ [3 # 3! CR @ iiY)! *! '[I% 4 !! JFp $ X% X3 @ J! MZE6! GRiKUi $ HGKMf0U61S46% i1 "AB! TI, fLl! D1X3RDDE8ALfTCbM8UP9p4iUqY-0k4krHpk9XK @ `rbj2Ti'U @ 5rGH @ + [fr-i4T6-qXpfl26, k! H5 $ NmlTIkI '(l3GI4) f8mII & 01CNEbC2LrNLBeaZ1HG @ $ G8! Z6 "k) hh, q9p" r6FC * !! Se "(ic, Pd (4 (b`pflKC`H1 & JN5) GVX3mREdH55 [l`% `Yhp% q092c`A (hPV)! 83Dr & f4$$ L # I1aM- "VjqV-q $ 34KQq6 $ M $ f8 #, Zc, i),! (` * ZN! $ K $ rS! LA% 3cL + dYi "@, K (Z "` # 3! FKi !!!:
Debe haber una línea de texto, que es utilizado por los usuarios y herramientas para reconocer las versiones BinHex: (This file must be converted with BinHex 4.0)
. Cualquier texto antes de esta línea debe ignorarse. [4]
El resto del archivo consta de tres partes, un encabezado (que contiene el nombre del archivo, tamaño, etc.), una bifurcación de datos (que contiene los datos del archivo) y una bifurcación de recursos . Cada uno tiene una suma de comprobación CRC de dos bytes .
Todo excepto la (This file
línea ... se ve entonces como un área de datos binarios, que se codifica en caracteres ASCII. El algoritmo de codificación dice que la entrada de tres bytes se divide en cuatro valores de 6 bits, de manera similar a como lo hace Base64 . A los números 0 a 63 se les asignan caracteres de acuerdo con la siguiente lista!"#$%&'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ[`abcdefhijklmpqr
Al codificar, se debe insertar un
Referencias
- ^ a b c d Mann .
- ^ a b c d e f g Lempereur 1997 .
- ^ Por ejemplo, el código fuente de la versión CWI de
hexbin
incluido en macutils , en lahecx.c
línea 187, usa la expresión((c)-0x20) & 0x3f
para obtener el valor numérico de un dígito HCX con el valor ASCIIc
. - ^ RFC 1741 Tipo de contenido MIME para archivos codificados BinHex. Faltstrom, P. y Crocker, D. y Fair., E. (diciembre de 1994).
Bibliografía
- Mann, Tim. "Prehistoria de BinHex" .
- Lempereur, Yves (25 de noviembre de 1997). "Prehistoria de BinHex" .
Ver también
- Codificación de binario a texto para una comparación de varios algoritmos de codificación
enlaces externos
- Definición de BinHex 4.0 - Peter N Lewis, agosto de 1991.
- Convert :: BinHex , un módulo de Perl para codificar y decodificar archivos BinHex
- macutils , convierte entre diferentes codificaciones de archivos de Macintosh para UNIX
- UUDeview , decodificador de línea de comando multiplataforma
- Codificador / decodificador BinHex en línea