인코딩과 문자 집합/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%만증가하면서, 사용하는 문자수도 최소화한 인코딩이다.