본문으로 이동

인코딩과 문자 집합/Ascii85

위키책, 위키책

Ascii85는 공간을 상당히 절약하면서 일반적인 8비트단위의 문자열을 아스키 코드로 변환하는 방법이다.

4 바이트(32 비트)의 가능한 총 수는 232 = 4,294,967,296 개. 85의 5제곱은 855 = 4,437,053,125 이고, 232는 845보다 작은 것에 기반하여, 25%만 증가한다.

또한 85진수를 사용하기는 하지만 직접 수에다가 33을 더해 인코딩된다. 즉 아스키 코드 값이 33("!") 에서 117 ("u")까지로 인코딩된다. 만약 232 − 1 ("s8W-!")보다 큰 값이 인코딩되어 있다면 오류이다.

만우절에 출간된 위의 RFC에서는 IPv6을 32비트씩 끊지 않고 20비트로 인코딩하는 방법을 정의하고 있다.

실습

[+/-]

유닉스 용어인 Man page의 앞 네글자를 인코딩해 보자.

Text content M a n
ASCII 77 97 110 32
Bit pattern 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0
32-bit Value 1,298,230,816 = 24×854 + 73×853 + 80×852 + 78×85 + 61
Base 85 (+33) 24 (57) 73 (106) 80 (113) 78 (111) 61 (94)
ASCII 9 j q o ^

이렇게 25%만증가하면서, 사용하는 문자수도 최소화한 인코딩이다.