Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

BinHex

From Wikipedia, the free encyclopedia
BinHex 4
Filename extension
.hqx
Internet media type
  • application/mac-binhex40
  • application/mac-binhex
  • application/binhex
Uniform Type Identifier (UTI)com.apple.binhex-archive

BinHex, originally short for "binary-to-hexadecimal", is abinary-to-text encoding system which was used on theclassic Mac OS for sending binary files overemail. BinHexed files take up more space than the original files, but avoiddata corruption by software that is not8-bit clean.

History

[edit]

TRS-80 BinHex

[edit]

BinHex was originally written in 1981 by Tim Mann for theTRS-80 computer, as a standalone version of the encoding scheme of the popularterminal emulatorST80-III, for users of other terminals. It was used for sending files via majoronline services such asCompuServe which, not being 8-bit clean, required files to useASCII armoring to survive. The system became very popular after Mann uploaded it to CompuServe's TRS-80 files area.[1]

The original scheme converted the binary file contents to hexadecimal numbers, encoding those asASCII digits and letters (09,AF), and adding anewline after every 60 characters. The system quickly gained the addition of achecksum at the end of every line to check for errors, and a subsequent conversion to use theBASIC/Scompiler allowed it to run much faster than the originalinterpreted version.[1]

BinHex files of the era were typically given thefile extension.hex. Ports soon appeared for other popular computers of the era, including theApple II. When CompuServe later added support for 8-bit transfers, the format fell out of use.[1]

Mac BinHex

[edit]

When theMacintosh 128K was released in January 1984, the file upload problem still existed on CompuServe. In April, BinHex was ported to the Mac usingMS BASIC for Macintosh.[1] TheMacintosh File System had introduced the storage of files as a "resource fork" and "data fork", and the Macintosh port only supported encoding of files' data fork, meaning it could only be used for data files. Several newer versions were published during 1984, resulting in BinHex 3 which could encode both forks.

Yves Lempereur, author of the firstassembler for the Mac, MacASM, ported BinHex 3 to assembly language, increasing its speed a hundred-fold, and released it as BinHex 1.0.[2]

Compact BinHex

[edit]

The simplicity of the original BinHex format made it inefficient, expanding everybyte of input into two, as required by the hexadecimal representation, an 8-to-4 bit encoding. Lempereur implemented a new 8-to-6 bit encoding, which decreased file size by 50% and expanded the checksum from 8 to 16-bits, releasing this as BinHex 2.0.[2]

The new encoding used the first 64 ASCII printing characters, including the space, to represent the data, similarly touuencoding. As the smaller files were incompatible with the older format, Lempereur changed the file extension to.hcx, withc meaningcompact. The name BinHex did not change, despite the format no longer being a hexadecimal representation.[2]

BinHex 4 and 5

[edit]

In 1985 Lempereur released BinHex 4.0, skipping 3.0 to avoid confusion with a similarly-numbered version of BASIC. This version performed the following sequence of operations:[3]

  • Generatecyclic redundancy checks (CRCs) for the data fork, resource fork, and file metadata, instead of a single checksum
  • Combine the forks and metadata with their checksums into a common 8-bit format
  • Applyrun-length encoding to provide some compression
  • Perform the 8-to-6 bit conversion.

The resulting files were roughly the same size as those from BinHex 2, but much more robust, with themetadata information in the header being protected from corruption by no longer being in plain text. The file extension for this new format was.hqx.[2]

At about the same time, most online services had started to support robust 8-bit file transfer protocols such asZMODEM. This obviated the need for ASCII armoring, but on the Macintosh there was still the need to encode the two forks into one, leading to the development of theMacBinary file format. Lempereur released BinHex 5.0, which only differed by using MacBinary to combine the forks, but it saw little use.[2]

Internet usage

[edit]

While theInternet was gaining popularity in the 1990s, email was still the primary method of moving files. Relatively few people had full access, and services likeFTPmail were the only way many users could download files. Consequently, binary files still required encoding, and BinHex 4.0 remained a popular tool for doing so into the late 1990s. BinHexed files can still be found today in archives ofclassic Mac OS software.[2]

BinHex 4 file format

[edit]

A BinHex file may begin with any text content, followed by a line which indicates the format of the file, and that binary data is about to begin:(This file must be converted with BinHex 4.0). The text preceding that line is ignored when the file is converted out of BinHex format.[3][4]

The binary data is encoded to 7-bit ASCII characters, with three bytes of input (24 bits) divided into four 6-bit values, in a similar fashion toBase64 encoding but using a different set of characters. The encoded data has a colon (:) placed before and after it, and is split into lines of a maximum of 64 characters in length.[3]

Example of a BinHex-encoded file

[edit]
(This file must be converted with 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!!!:

References

[edit]
  1. ^abcdMann 1997.
  2. ^abcdefLempereur 1997.
  3. ^abcFaltstrom, Crocker & Fair 1994.
  4. ^Lewis 1991.

Citations

[edit]

See also

[edit]

External links

[edit]
Retrieved from "https://en.wikipedia.org/w/index.php?title=BinHex&oldid=1281388044"
Categories:

[8]ページ先頭

©2009-2025 Movatter.jp