Base85 인코더 및 디코더

Base85는 4바이트를 5개의 ASCII 문자에 압축합니다. 64자가 아닌 85자의 문자 집합을 사용하므로, Base64의 “3바이트를 4문자로” 비율보다 더 촘촘합니다. 이 도구는 PostScript와 PDF 파일 안에 들어 있는 Adobe Ascii85 방식을 구현합니다. 인코더는 항상 <~~> 구분 기호로 출력을 감싸며, 디코더는 구분 기호가 있든 없든 입력을 받습니다.

Base85(Ascii85)를 변환하는 방법

  1. 1

    인코딩 또는 디코딩 선택

    인코딩은 원시 바이트를 Ascii85로 바꾸고, 디코딩은 Ascii85 문자열을 다시 바이트로 바꿉니다.

  2. 2

    텍스트 붙여넣기

    인코딩할 바이트 또는 디코딩할 Ascii85 문자열을 입력란에 붙여 넣으세요.

  3. 3

    인코더가 4바이트씩 나눔

    4바이트 블록 하나하나가 5문자 Base85 문자열이 됩니다. 마지막 블록은 채움 문자를 더한 뒤 끝을 잘라냅니다.

  4. 4

    결과 복사

    Ascii85 출력은 `<~`와 `~>` 구분 기호로 감싸집니다. 다시 붙여 넣으면 디코딩되며 구분 기호는 자동으로 제거됩니다.

크기 증가율 비교

인코딩 방식 4바이트당 문자 수 이진 대비 증가율
Hex 8 +100%
Base64 5.33(채움 문자 포함 시 8로 올림) +37%
Base85 5 +25%
원시 이진 4 0

따라서 1 MB 이진 데이터는 Base85에서 1.25 MB, Base64에서 1.33 MB, hex에서 2 MB가 됩니다.

Ascii85 문자 집합

Ascii85(Adobe): ASCII에서 33부터 117에 해당하는 !부터 u까지의 문자와, 0 바이트 4개를 줄여 쓰는 기호인 z를 사용합니다. PostScript와 PDF 스트림의 표준 인코딩이며 <~...~>로 감쌉니다.

Z85(ZeroMQ)와 IPv6용 RFC 1924 문자 집합은 같은 85문자 아이디어를 다르게 배정한 것입니다. 이 도구는 해당 방식을 구현하지 않으므로, 그 방식으로 인코딩된 문자열을 여기서 디코딩하면 결과가 잘못됩니다.

계산 원리

4바이트마다 빅엔디언 32비트 정수 N으로 읽습니다. 출력되는 5개 문자는 N을 85진법으로 나타냈을 때의 각 자리이며, 가장 높은 자리부터 나옵니다. 85^5 = 4 437 053 1252^32보다 크므로, 4바이트는 항상 5문자 안에 들어갑니다.

Ascii85가 중요한 경우

텍스트 편집기로 PDF를 열고 ASCII85Decode를 검색해 보세요. Adobe는 7비트 전송(옛 팩스 방식 시스템)을 통과해야 하는 내장 이미지와 글꼴을 위한 필터로 이를 사용합니다. 같은 인코딩은 많은 PostScript 파일과 이메일로 안전하게 보낼 수 있는 바이너리 전송에서도 쓰입니다.

특수한 경우

  • 모두 0인 4바이트 블록: Ascii85는 이를 !!!!! 대신 한 글자 z로 인코딩합니다.
  • 마지막 부분 블록: 0 바이트로 채운 뒤, 그에 해당하는 수만큼 출력 문자를 끝에서 잘라냅니다.

자주 묻는 질문

출력이 더 작다는 점에서는 그렇습니다. 어디서나 호환된다는 점에서는 그렇지 않습니다. Ascii85에는 XML, JSON, URL에서 이스케이프가 필요한 <, >, &, " 같은 문자가 들어갑니다. 대부분의 도구는 Base64를 기본으로 지원합니다.

PostScript와 PDF 스트림 안입니다. 인코딩된 영역은 <~~>로 표시됩니다. PDF 뷰어와 편집기는 이 인코딩을 자동으로 처리합니다.

아니요. Adobe Ascii85만 구현합니다. Z85(ZeroMQ)와 IPv6용 RFC 1924 문자 집합은 85개 문자를 다르게 배정하므로, 그 방식으로 인코딩된 문자열은 여기서 잘못 디코딩됩니다.

Ascii85 규약에 따라 인코딩된 영역을 표시하기 때문입니다. 인코더는 항상 이를 추가하며, 디코더는 있으면 자동으로 제거합니다. 구분 기호 없이 문자열을 붙여 넣어도 됩니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다