10진수를 Base64로 변환하는 방법
- 입력 · 10진수 바이트에 숫자를 붙여넣으세요. 숫자 하나가 한 바이트입니다.
- 입력하는 동안 출력 · Base64에 Base64가 나타납니다.
- 출력 아래의 패딩 (=) 옵션은 끝의
=를 유지하거나 빼고, 줄 바꿈은 긴 출력을 64자나 76자에서 나눕니다. - 출력 복사를 누르거나, Base64 → 10진수 바이트로 방향을 바꿔 결과를 확인하세요. Base64를 10진수로는 같은 도구를 반대 방향으로 쓴 것입니다.
입력 형식
| 입력 | 출처 | Base64 |
|---|---|---|
72 105 33 | 일반 목록 | SGkh |
[72, 105, 33] | JSON, Python list(b) | SGkh |
{72, 105, 33} | C나 Java 초기화 목록 | SGkh |
72;105;33 | ;를 쓰는 CSV 내보내기 | SGkh |
[72, 105, -1] | Java Arrays.toString(bytes) | SGn/ |
072 105 | 0으로 자릿수를 맞춘 열 | SGk= |
0으로 자릿수를 맞춘 숫자는 10진수로 읽으므로 072는 72입니다. 각 값은 −128부터 255까지의 정수여야 합니다. 범위를 벗어난 값이 있으면 변환을 멈추고 어떤 값인지 메시지로 알려 주며, 72.105처럼 엉뚱한 글자나 점이 있으면 그 위치를 알려 주고 표시를 누르면 해당 문자가 선택됩니다.
목록에 48 69 21 같은 hex 값이 들어 있으면 10진수 48, 69, 21로 읽혀 다른 결과가 나옵니다. 그런 값에는 Hex를 Base64로를 쓰세요. 0x 값, 캐스트, 타입 이름이 포함된 소스 코드의 배열이라면 바이트 배열을 Base64로가 더 잘 맞습니다.
10진수 바이트 목록은 어디서 오나
10진수 바이트 목록은 대부분 프로그래밍 언어가 바이너리 데이터를 기본 방식으로 출력한 것입니다.
| 출처 | Hi!를 출력한 결과 |
|---|---|
Python list(b"Hi!") | [72, 105, 33] |
Node.js JSON.stringify(Buffer.from("Hi!")) | {"type":"Buffer","data":[72,105,33]} |
Java Arrays.toString("Hi!".getBytes()) | [72, 105, 33] |
JavaScript Array.from(new TextEncoder().encode("Hi!")) | [ 72, 105, 33 ] |
이런 목록을 Base64로 바꾸면 설정 파일, 테스트 픽스처, API 요청에 넣을 짧은 문자열이 됩니다. 72, 105, 33은 11자인데 Base64 SGkh는 4자입니다.
코드에서 10진수를 Base64로
import base64
base64.b64encode(bytes([72, 105, 33])).decode() # 'SGkh'
bytes()는 음수 값에 ValueError: bytes must be in range(0, 256)을 발생시킵니다. Java 방식의 부호 있는 바이트는 먼저 [v & 0xff for v in values]로 변환하세요.
Buffer.from([72, 105, 33]).toString("base64"); // 'SGkh'
Buffer.from은 각 값을 아무 말 없이 256으로 나눈 나머지로 받아들이므로 -1은 255가 되고 256은 조용히 0이 됩니다. 위의 도구는 256을 거부하므로 실제로는 바이트가 아닌 목록을 잡아낼 수 있습니다. 더 많은 내용은 Python과 Node.js 페이지를 참고하세요.
바이트가 아닌 숫자
사용자 ID, 타임스탬프, 카운터 같은 큰 숫자 하나는 몇 바이트를 어떤 순서로 차지할지 정하기 전까지는 정해진 Base64 형태가 없습니다. Unix 시간 1700000000을 4바이트 빅 엔디언 값으로 나타내면 ZVPxAA==이고, 8바이트로 나타내면 AAAAAGVT8QA=입니다. 받는 시스템이 기대하는 배치를 골라 코드에서 인코딩하세요. 이 페이지는 16비트나 32비트 숫자 목록이 바이트로 오인되지 않도록 255보다 큰 값을 일부러 거부합니다.
자주 묻는 질문
1000 같은 숫자 하나를 Base64로 바꿀 수 있나요?
이 페이지에서는 안 됩니다. 여기서는 숫자 하나가 한 바이트인데 1000은 한 바이트에 들어가지 않기 때문입니다. 그 숫자를 몇 바이트로, 어떤 바이트 순서로 나타낼지 정한 뒤 그 바이트를 인코딩하세요. Python에서는 base64.b64encode((1000).to_bytes(2, "big"))가 A+g=를 줍니다.
숫자 사이에 어떤 구분자를 쓸 수 있나요?
공백, 탭, 줄 바꿈, 쉼표, 세미콜론을 섞어서 쓸 수 있습니다. 대괄호, 중괄호, 소괄호는 무시하므로 JSON 배열이나 C 초기화 목록을 그대로 붙여넣으면 됩니다.
음수는 어떻게 처리하나요?
−1부터 −128까지는 Java와 Kotlin이 출력하는 방식대로 부호 있는 바이트로 읽습니다. −1은 255, −128은 128입니다. −128보다 작은 값은 오류입니다.
JSON 바이트 배열을 Base64로 바꾸려면 어떻게 하나요?
괄호까지 포함해 배열을 붙여넣으세요. Node의 {"type":"Buffer","data":[...]} 객체라면 data 배열만 붙여넣으세요.