사용 방법
- 텍스트나 바이트를 basE91로 바꾸려면 ‘인코딩’을, basE91을 원래 데이터로 되돌리려면 ‘디코딩’을 선택합니다.
- 내용을 입력하거나 붙여넣거나, ‘파일 열기’로 파일을 불러옵니다. 원시 바이트라면 ‘입력 형식’을 ‘16진수’로 바꿉니다.
- 결과는 입력하는 즉시 갱신됩니다. 디코딩할 때는 ‘출력 형식’을 ‘텍스트’ 또는 ‘16진수’로 선택합니다.
- 결과를 복사하거나 파일로 다운로드합니다.
basE91이란?
basE91은 Joachim Henke가 설계한 바이너리-텍스트 인코딩입니다. 인쇄 가능한 ASCII 문자 95개 중에서 공백, 작은따옴표 ', 하이픈 -, 백슬래시 \를 제외한 91개를 사용합니다.
basE91은 고정된 바이트 블록 단위로 동작하지 않습니다. 인코더는 입력 비트를 버퍼에 모아 한 번에 13비트씩 꺼냅니다. 13비트 값이 88보다 크면 그대로 두 문자로 표기합니다. 88 이하이면 14번째 비트를 하나 더 가져오는데, 91진수 두 자리로 91 × 91 = 8281가지 값을 표현할 수 있으므로 이 경우에도 두 문자에 들어갑니다. 따라서 13비트 또는 14비트가 항상 정확히 2문자가 됩니다.
그 결과 오버헤드는 최대 약 23%이며, 0 바이트가 길게 이어지는 데이터에서는 약 14%까지 줄어듭니다. 무작위 데이터나 압축된 데이터는 상한에 가까운 결과가 나옵니다.
다른 인코딩과의 비교
| 인코딩 | 문자 수 | 출력 크기 |
|---|---|---|
| 16진수 | 16 | 입력의 2배 |
| Base58 | 58 | 입력의 약 1.37배 |
| Base64 | 64 | 입력의 1.33배 |
| Base85 / Ascii85 | 85 | 입력의 1.25배 |
| basE91 | 91 | 입력의 약 1.14~1.23배 |
실제 데이터로 출력 길이를 비교하려면 모든 인코딩 도구에 데이터를 입력해 보십시오.
알아 두어야 할 점
- 이스케이프. 알파벳에는 JSON과 대부분의 문자열 리터럴에서 이스케이프해야 하는 큰따옴표
"와, HTML과 XML에서 이스케이프해야 하는<,>,&가 포함되어 있습니다. basE91은 URL에 안전하지 않습니다. - 문자열 전체를 디코딩해야 합니다. 비트가 문자 경계를 넘나들기 때문에 basE91 문자열 중간에서 잘라 낸 일부는 단독으로 디코딩할 수 없습니다.
- 지원 현황. basE91은 IETF 표준이 아닙니다. 저자가 C를 비롯한 여러 언어로 참조 구현을 공개하고 있으며, Python용
base91패키지처럼 대부분의 플랫폼에 포팅된 구현이 있습니다.
사양
| 알파벳 | 인쇄 가능한 ASCII 문자 91개 |
|---|---|
| 출력 크기 | 약 123% |
| 패딩 | 없음 |
| 표준 | basE91(Joachim Henke) |
| 대소문자 구분 | 예 |
예시
| 입력 (UTF-8) | 출력 |
|---|---|
Hello, World! | >OwJh>}AQ;r@@Y?F |
Base64.is | xD7gXm^?t#5 |
你好 | I_5k7aPE |
자주 묻는 질문
basE91은 Base64보다 작습니까?
예. Base64는 항상 33%가 늘어나지만 basE91은 최대 약 23%만 늘어나며, 0 바이트가 많은 데이터에서는 더 적게 늘어납니다. 1MB 파일이라면 대략 100KB를 절약할 수 있습니다.
basE91은 어떤 문자를 사용합니까?
A-Z와 a-z, 숫자 0-9, 그리고 기호 !#$%&()*+,./:;<=>?@[]^_`{|}~"를 사용합니다. 공백, 작은따옴표, 하이픈, 백슬래시는 사용하지 않습니다.이름을 basE91로 표기하는 이유는 무엇입니까?
저자가 이름을 그렇게 표기하기 때문입니다. basE91과 Base91은 같은 인코딩을 가리키며, 이 페이지는 원래 알고리즘을 따릅니다.
공백 문자가 있으면 디코딩이 실패합니까?
아니요. 공백과 줄 바꿈은 알파벳에 포함되지 않으므로 이 페이지의 디코더는 이를 무시합니다. 줄이 나뉜 basE91 텍스트도 그대로 붙여넣을 수 있습니다.