Ascii85
또는
Base85
불리는 이것은 Paul E. Rutter가 유틸리티
en:btoa
를 위해 만든
en:binary-to-text encoding
方法으로 5個의
ASCII
文字로 4 바이트의
李瑱 데이터
를 表現한다. ASCII 한 文字가 8비트라면 이 方法으로 하면 原本이 ¹?₄만큼 더 커진다. 이것은 4個의 文字로 3 바이트를 表現해서 ¹?₃만큼 더 커지는
en:uuencode
나
베이스64
보다 效率的이다.
이것은
Adobe
의
포스트스크립트
와
PDF
파일 形式에 使用된다.
基本 構想
[
編輯
]
binary-to-text encoding은 사람이 읽을 수 있는(
en:human-readable
) 文字만을 電送할 수 있는 旣存 通信 프로토콜 위에서
李瑱 데이터
를 다루기 위해서 必要했다. 이런 環境에서 文字는 7 비트만을 使用하고 그 마저도 一部 制御 文字를 빼야하므로 데이터의 電送에 使用할 수 있는 文字는 95個 뿐이다.
4 바이트는 2
32
= 4,294,967,296 가지의 값을 가지고, 5자리 85 진수(
en:radix
)는 85
5
= 4,437,053,125 가지의 값이 可能하므로 이걸로 32비트 값을 充分히 表現할 수 있다. 5자리의 84 진수는 84
5
= 4,182,119,424 가지 값만을 가지기 때문에 85街 5자리로 4바이트를 表現해 낼 수 있는 最小값이라 이것이 選擇되었다.
인코딩은 4바이트를
big-endian
으로 묶어 32비트 數를 얻는 것에서 始作한다. 이것을 85進數로 바꾼다. 85를 連續해서 나누면서 나머지들을 얻는 過程이다. 그렇게 5자리의 85진수가 얻어지면, 各 자리에 33를 더해서 33 ("!")에서 117 ("u")까지의 ASCII 文字로 바꾸는 것이다.
데이터가 모두 0인 境遇는 相當히 흔하기 때문에 例外的으로 데이터 壓縮을 爲해서 "
z
" 한 文字로 인코딩한다. "
!!!!!
"가 아니다.
디코딩했을 때
2
32
? 1
(인코딩 했을 때 "
s8W-!
")보다 큰 數는 에러다. as will "
z
" characters in the middle of a group. White space between the characters is ignored and may occur anywhere to accommodate line-length limitations.
Ascii85의 한 가지 短點은 인코딩 데이터가 backslash나 quote 같은
en:escape character
를 包含할 수 있다는 것인데, 이것들은 많은 프로그래밍 言語나 一部 文字 基盤의 프로토콜에서 특별한 意味를 가지므로 問題가 될 수 있다. Z85는 소스 코드에서도 安全하도록 設計된 것이다.
[1]
같이 보기
[
編輯
]
各州
[
編輯
]
外部 링크
[
編輯
]