> base36 | 0-9,A-Z | compact <
// Base36 – 숫자 0-9와 대문자 A-Z를 사용하는 컴팩트한 영숫자 인코딩
영숫자만 사용
숫자 0-9와 영문자 A-Z만 사용하므로 대부분의 시스템, DB, URL 환경에서 안전하게 사용할 수 있습니다.
컴팩트한 표현
큰 수를 10진수보다 짧은 영숫자 문자열로 표현하여 로그, 링크, 코드 등에 활용하기 좋습니다.
URL 친화적
특수 문자가 없어 짧은 URL, 공개 ID, 제품 코드, 라이선스 키 등에 적합합니다.
>> 기술 정보
Base36 동작 방식:
Base36은 36개의 기호(0-9, A-Z)를 사용하는 기수법입니다. 각 자리는 36의 거듭제곱을 나타내며, 큰 수를 짧은 영숫자 문자열로 변환할 수 있습니다.
Base36 예시:
숫자 → Base36: 123 → 3F 1000 → RS 999999 → LFLR 텍스트 → Base36 (바이트 기준): Hi → 1Q5 ABC → 3O0AF 주요 사용 사례: - 동영상/리소스 ID - 단축 URL - 세션 토큰 - 제품 코드 - 라이선스 키
Base36를 사용할 이유:
- ▸큰 수에서 짧고 읽기 쉬운 ID를 생성할 수 있음
- ▸특수 문자가 없는 URL 안전 토큰을 만들 수 있음
- ▸숫자 값을 컴팩트한 영숫자 문자열로 압축
- ▸대부분의 구현에서 대/소문자를 구분하지 않아 입력 변형에 강함
- ▸순수 16진수 표현보다 사람에게 더 친숙한 경우가 많음
>> 자주 묻는 질문
Base36란 무엇인가요?
Base36는 숫자 0-9와 문자 A-Z, 총 36개의 기호를 사용하는 위치 기수법입니다. 영숫자만으로 숫자를 컴팩트하게 표현할 수 있습니다.
Base36는 어디에 사용되나요?
Base36는 짧은 공개 ID, 단축 URL, 세션 토큰, 제품 코드 등 사람도 읽기 쉬운 식별자에 널리 사용됩니다.
Base36는 대/소문자를 구분하나요?
대부분의 구현에서 Base36는 대/소문자를 구분하지 않으며, A-Z와 a-z를 동일하게 처리합니다. 이로 인해 대소문자 차이로 인한 오류가 줄어듭니다.
다른 인코딩과 비교했을 때 Base36의 장점은 무엇인가요?
Base36는 10진수보다 더 컴팩트하지만, 16진수나 Base64만큼 짧지는 않습니다. 영숫자만 사용하므로 호환성과 가독성의 균형을 잘 맞춥니다.
// 빠른 참조
| DEC | HEX | Base36 | Base62 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 35 | 23 | z | z |
| 36 | 24 | 10 | A |
| 100 | 64 | 2s | 1c |
| 1000 | 3e8 | rs | G8 |
| 123456789 | 75bcd15 | 21i3v9 | 8M0kX |
| 4294967295 | ffffffff | 1z141z3 | 4gfFC3 |
// 코드 예제
JavaScript (123).toString(36) // "3f" parseInt("3f", 36) // 123
Python int("3f", 36) // 123 (no built-in int -> base36; write a loop)
Java Integer.toString(123, 36) Long.parseLong("3f", 36)
PHP base_convert("123", 10, 36)
Go strconv.FormatInt(123, 36) strconv.ParseInt("3f", 36, 64)
>> 더 많은 질문
Q: JavaScript, Python, Java에서 Base36은 어떻게 쓰나요?
A: JavaScript, Java, PHP, Go에는 내장 기능이 있습니다. (123).toString(36)은 "3f", parseInt("3f", 36)은 다시 123을 반환합니다. Python에서는 int(s, 36)로 디코딩하고, 인코딩은 짧은 반복문으로 작성합니다.
Q: Base36로 인코딩할 수 있는 가장 큰 정수는?
A: 이론상 최대값은 없으며 Base36은 위치 기수법일 뿐입니다. 실제로는 정수 타입이 한계를 정합니다. JavaScript의 Number.MAX_SAFE_INTEGER(2⁵³−1)는 2gosa7pa2gv이며, 더 큰 값은 BigInt를 사용하세요.
Q: YouTube나 단축 URL의 ID가 Base36/Base62처럼 보이는 이유는?
A: 짧은 ID는 보통 큰 정수(DB ID나 해시)를 더 큰 진법으로 변환해 만듭니다. Base36은 대소문자를 구분하지 않고, Base62는 더 짧지만 대소문자를 구분합니다.