사용 방법
- 입력란에 텍스트를 입력하거나 붙여넣습니다.
- 입력하는 동안 2진수, 8진수, 10진수, 16진수, Base32 변형, Base36부터 Base91까지, uuencode와 xxencode의 결과가 모두 실시간으로 바뀝니다.
- 결과를 비교해 어떤 인코딩이 가장 짧은지, 또는 허용되는 문자만 사용하는지 확인합니다.
- 필요한 결과 옆의 ‘복사’ 버튼을 클릭합니다.
하나의 입력으로 모든 인코딩 보기
이 페이지의 각 인코딩은 같은 바이트를 서로 다른 문자 집합으로 바꿉니다. 결과를 나란히 놓고 보면 프로젝트에 쓸 인코딩을 고르거나, 로그나 설정 파일에서 발견한 문자열이 무엇인지 알아보거나, 형식 간의 차이를 익히기가 가장 쉽습니다. 텍스트는 UTF-8 바이트로 인코딩되므로 악센트가 붙은 문자는 2바이트, 한자나 한글 한 글자는 3바이트로 계산됩니다. 모든 처리는 브라우저에서 이루어집니다.
- 바이트별 숫자. 2진수, 8진수, 10진수는 바이트를 하나씩 따로 표기합니다. 읽기는 쉽지만 길이가 깁니다.
- 비트 그룹. 16진수, Base32(Base32hex, Crockford, z-base-32 포함), Base64, Base64URL은 문자마다 고정된 비트 수를 할당하므로 출력 길이가 입력 길이에만 좌우됩니다.
- 큰 수. Base36, Base58, Base62는 입력 전체를 하나의 큰 정수로 다룹니다. 값에 따라 길이가 한 글자 정도 달라질 수 있으며, 앞쪽의 0 바이트는 앞쪽 문자로 보존됩니다.
- 블록. Base45는 2바이트를 3문자로, Ascii85, Z85, Base85는 4바이트를 5문자로 바꾸며, Base91은 문자 두 개마다 13비트 또는 14비트를 담습니다.
- 줄 단위. uuencode와 xxencode는 예전 이메일과 유즈넷에서 쓰던 형식으로, 데이터를 여러 줄로 나눠 쓰며 각 줄은 길이를 나타내는 문자로 시작합니다.
출력 크기 비교
입력 1바이트당 각 인코딩에 필요한 문자 수와, SHA-256 해시나 Ed25519 공개 키 같은 32바이트 값이 몇 문자가 되는지 정리했습니다.
| 인코딩 | 바이트당 문자 수 | 32바이트의 길이 |
|---|---|---|
| Base16(16진수) | 2.0 | 64 |
| Base32 | 1.6 | 56(패딩 없이 52) |
| Base36 | 약 1.55 | 49 또는 50 |
| Base45 | 1.5 | 48 |
| Base58 | 약 1.37 | 43 또는 44 |
| Base62 | 약 1.34 | 42 또는 43 |
| Base64 | 약 1.33 | 44(패딩 없이 43) |
| Base85 | 1.25 | 40 |
| Base91 | 약 1.23 | 39 또는 40 |
16진수에서 Base64로 바꾸면 길이가 3분의 1 줄어듭니다. 하지만 Base64에서 Base91로 더 나아가도 추가로 줄어드는 길이는 약 8%에 불과합니다.
어떤 인코딩을 골라야 할까
출력이 가장 짧다고 해서 항상 가장 좋은 것은 아닙니다. Ascii85에는 따옴표와 백슬래시가, Base91에는 큰따옴표가 들어갈 수 있어 JSON, HTML, 셸 명령에서는 이스케이프가 필요할 수 있습니다. 문자열이 어디에 쓰일지 먼저 생각해 보십시오.
- URL과 파일 이름: Base64URL, Base58 또는 Base62.
- 소리 내어 읽거나 직접 입력할 때: 비슷하게 생긴 문자를 뺀 Crockford Base32 또는 Base58.
- 대소문자를 구분하지 않는 시스템: 16진수, Base32 또는 Base36.
- QR 코드: QR 영숫자 모드의 문자만 사용하는 Base45.
- PDF, Git, ZeroMQ의 간결한 텍스트: Ascii85, Base85 또는 Z85.
- 최대 호환성: 거의 모든 언어와 플랫폼이 지원하는 Base64.
자주 묻는 질문
어떤 인코딩의 출력이 가장 짧습니까?
이 페이지의 인코딩 중에서는 Base91이 바이트당 약 1.23문자로 가장 간결하고, 그다음이 1.25문자인 Ascii85, Z85, Base85입니다. Base64는 약 1.33문자가 필요하지만 훨씬 널리 지원되므로 보통 기본값으로 사용합니다.
입력 크기가 같은데 Base58과 Base62 결과의 길이가 다른 이유는 무엇입니까?
두 인코딩은 입력 전체를 하나의 큰 수로 변환하므로 길이가 크기뿐 아니라 값에 따라서도 달라집니다. 또한 앞쪽의 0 바이트마다 앞쪽에 문자가 하나씩 추가됩니다. 16진수, Base32, Base64는 바이트 수가 같으면 길이도 항상 같습니다.
이 페이지에서 문자열을 디코딩할 수 있습니까?
2진수 출력이 이렇게 긴 이유는 무엇입니까?
2진수는 바이트마다 8자리를 쓰고 구분자도 더해지므로 16진수보다 최소 4배 깁니다. 데이터를 저장하거나 전송하기 위한 것이 아니라 개별 비트를 살펴보기 위한 형식입니다.
입력한 텍스트가 서버로 전송됩니까?
아니요. 모든 인코딩은 브라우저의 JavaScript로 계산되며, 텍스트는 기기 밖으로 나가지 않습니다.