파일 업로드
  1. base64hub
  2. 기타 진법
  3. 바이트 배열 → Base64

바이트 배열을 Base64로 변환 (모든 언어 지원)

소스 코드나 디버거에서 바이트 배열을 그대로 붙여넣으면 Base64가 나옵니다. 파서는 C, JavaScript, Python, Java, Go, C#, Rust 리터럴과 72, 105, 33 같은 숫자 목록을 읽습니다.

무료 가입 없음, 제한 없음 로컬 업로드 없음 −128..−1 Java의 부호 있는 바이트도 올바르게 읽음 업데이트 2026. 10. 27.
입력 0바이트 0 B출력 0

브라우저에서 처리됩니다. 이 페이지는 데이터를 어디로도 보낼 수 없습니다 – 확인 방법

바이트 배열을 Base64로 변환하는 방법

  1. 입력란에 배열을 붙여넣으세요. 선언 전체를 넣어도 됩니다. 타입 이름, 변수 이름, 괄호, 세미콜론은 건너뜁니다.
  2. 출력에 Base64가 나타납니다. 출력 아래의 패딩 (=) 옵션과 줄 바꿈 옵션으로 형식을 조절합니다.
  3. 출력 복사를 누르거나, 변환 후 메뉴를 Hex나 Base64URL 같은 다른 형식으로 바꾸세요.
  4. Base64를 원하는 언어의 선언으로 되돌리려면 Base64를 바이트 배열로를 사용하세요.

붙여넣을 수 있는 것

아래의 모든 줄은 세 바이트 H, i, !의 Base64인 SGkh가 됩니다.

언어입력
C, C++unsigned char d[] = {0x48, 0x69, 0x21};
JavaScriptnew Uint8Array([72, 105, 33]), Uint8Array.from([72, 105, 33]), Buffer.from([72, 105, 33])
Pythonb'Hi!', b'\x48\x69\x21', bytes([72, 105, 33]), bytearray(b'Hi!')
Javanew byte[]{72, 105, 33}, (byte) 0x48 캐스트
Go[]byte{0x48, 0x69, 0x21}
C#new byte[] { 0x48, 0x69, 0x21 }
Rust[0x48u8, 0x69, 0x21], vec![72u8, 105, 33]
숫자 목록72, 105, 33 또는 72 105 33

값은 10진수, 0x가 붙은 hex, 0b가 붙은 2진수, 0o가 붙은 8진수, 'H' 같은 ASCII 문자 리터럴로 쓸 수 있습니다. u8, U, L 같은 타입 접미사는 무시합니다. Python 리터럴은 \n, \t, 8진수 이스케이프를 포함한 이스케이프 규칙을 모두 적용해 읽으며, 괄호 안의 여러 줄 리터럴처럼 연달아 나오는 b'...' 조각은 하나로 합칩니다.

부호 있는 바이트와 값의 범위

Java에는 부호 없는 바이트가 없으므로 Java나 Kotlin에서 출력한 배열에는 음수가 들어 있습니다. 변환기는 −128부터 −1까지를 바이트 0x80부터 0xff까지로 읽습니다.

입력바이트Base64
{72, 105, -1}48 69 ffSGn/
new byte[]{72, 105, (byte) 0xff, -1}48 69 ff ffSGn//w==
[-34, -83, -66, -17]de ad be ef3q2+7w==

255보다 크거나 −128보다 작은 값이 있으면 그 값과 위치를 알려 주고 변환을 멈춥니다. 072처럼 0으로 시작하는 숫자는 C의 8진수 58이 아니라 10진수 72로 읽는데, 바이트 값 목록을 붙여넣는 사람 대부분이 의도하는 바와 일치합니다.

이 페이지가 읽지 않는 형식

  • Node 콘솔의 <Buffer 48 69 21> 출력. 이 값들은 0x 없는 hex인데 변환기는 10진수로 읽어 버립니다. Buffer와 > 사이의 부분을 Hex를 Base64로에 복사하세요.
  • "Hi!" 같은 따옴표로 감싼 C 문자열. 텍스트는 텍스트를 Base64로를 쓰거나 바이트를 배열로 쓰세요.
  • {"type":"Buffer","data":[72,105,33]} 같은 JSON 객체. [72,105,33] 부분만 여기나 10진수를 Base64로에 붙여넣으세요.

코드에서 바이트 배열을 Base64로

String b64 = java.util.Base64.getEncoder().encodeToString(new byte[] {72, 105, 33});   // "SGkh"
string b64 = Convert.ToBase64String(new byte[] { 0x48, 0x69, 0x21 });   // "SGkh"
import base64
base64.b64encode(bytes([72, 105, 33])).decode()   # 'SGkh'
btoa(String.fromCharCode(...new Uint8Array([72, 105, 33])));   // 'SGkh'

전개 연산자는 모든 바이트를 별도의 인수로 넘기므로 큰 배열에서는 실패합니다. Node 24에서는 요소가 125,000개에서 200,000개 사이 어딘가에서 Maximum call stack size exceeded가 발생하며, 한계는 엔진마다 다릅니다. 큰 데이터에는 Node의 Buffer.from(arr).toString("base64")나 최신 브라우저의 arr.toBase64()를 쓰면 이 문제를 피할 수 있습니다. Uint8Array.toBase64를 참고하세요. 언어별 자세한 내용: Java, C#, Python, JavaScript.

자주 묻는 질문

Java에서 byte[]를 Base64로 바꾸려면 어떻게 하나요?

java.util.Base64.getEncoder().encodeToString(bytes)를 쓰세요. 하드코딩된 배열을 확인하려면 캐스트와 음수 값까지 포함한 new byte[] { ... } 선언 전체를 여기에 붙여넣으세요.

Python bytes 리터럴을 붙여넣을 수 있나요?

네. b'Hi!', b'\x48\x69\x21', \041 같은 8진수 이스케이프, bytes([72, 105, 33]), 여러 줄로 나뉜 리터럴 모두 됩니다.

"한 바이트에 들어가지 않습니다" 오류가 나는 이유는 무엇인가요?

255보다 크거나 −128보다 작은 값이 있기 때문입니다. 배열이 실제로는 short[]나 int[] 같은 16비트나 32비트 정수 배열인 경우가 많으며, 먼저 정한 바이트 순서에 따라 바이트로 나눠야 합니다.

0x가 없는 숫자도 hex로 읽나요?

아니요. 48만 쓰면 10진수 48입니다. hex 값에는 0x 접두사가 필요하며, 접두사 없는 hex는 Hex를 Base64로에 붙여넣으세요.