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

C, Java, Python, Go, C#용 Base64 바이트 배열 변환

Base64를 붙여넣으면 디코딩된 바이트를 소스 코드에 바로 붙여넣을 수 있는 배열 리터럴로 받습니다. 출력 아래에서 C/C++, JavaScript, Python, Java, Go, C#, Rust 중 언어를 고르세요.

무료 가입 없음, 제한 없음 로컬 업로드 없음 7 개 언어, C부터 Rust까지 업데이트 2026. 10. 27.
입력 0바이트 0 B출력 0

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

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

  1. 입력란에 Base64를 붙여넣으세요. 공백, 누락된 패딩, URL-safe 문자, data: 접두사도 받습니다.
  2. 출력 아래의 언어에서 대상을 고르세요. C / C++, JavaScript, Python, Java, Go, C#, Rust 중에서 선택하며, 페이지를 열면 JavaScript가 선택되어 있습니다.
  3. 출력 복사를 누르고 선언을 코드에 붙여넣으세요. data라는 이름은 알맞게 바꾸세요.
  4. 도구 위의 변환 전과 변환 후 메뉴로 입력이나 출력 형식을 바꿀 수 있습니다. 예를 들어 Base64 대신 hex를 읽을 수 있습니다.

배열을 다시 Base64로 바꾸려면 이 모든 형식을 읽는 바이트 배열을 Base64로를 사용하세요.

언어별 출력

Base64 3q2+7wABAgOAf/8K는 12바이트 de ad be ef 00 01 02 03 80 7f ff 0a로 디코딩됩니다. 언어 설정별 출력은 다음과 같습니다.

const unsigned char data[12] = {
    0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a
};
const data = new Uint8Array([
    0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a
]);
data = b'\xde\xad\xbe\xef\x00\x01\x02\x03\x80\x7f\xff\x0a'
byte[] data = new byte[] {
    -34, -83, -66, -17, 0, 1, 2, 3, -128, 127, -1, 10
};
data := []byte{
	0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a,
}
byte[] data = new byte[] {
    0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a
};
let data: [u8; 12] = [
    0xde, 0xad, 0xbe, 0xef, 0x00, 0x01, 0x02, 0x03, 0x80, 0x7f, 0xff, 0x0a
];

출력에 관한 참고 사항입니다.

  • 배열은 한 줄에 값 12개마다 줄을 바꿉니다. Python은 b'...' 문자열 하나에 16바이트씩 쓰고, 더 긴 데이터는 괄호 안에 이어 놓아 Python이 컴파일 시점에 연결하게 합니다.
  • Java는 부호 있는 10진수를 씁니다. (byte) 0xde처럼 쓰면 0x7f보다 큰 모든 값에 캐스트가 필요하기 때문입니다. -34와 0xde는 같은 비트입니다.
  • C와 Rust는 길이를 선언합니다. C 배열은 unsigned char이므로 127보다 큰 값도 경고 없이 들어갑니다.
  • Go는 마지막 값 뒤에 쉼표가 붙습니다. 닫는 중괄호가 별도 줄에 있으면 컴파일러가 이를 요구합니다.
  • Python은 출력 가능한 바이트까지 모든 바이트를 \x..로 쓰므로, 리터럴을 읽거나 diff할 때 헷갈리지 않습니다.

바이트를 넣을까, Base64를 유지할까

바이트 배열 리터럴은 프로그램에 Base64 디코더가 없거나 디코딩에 시간을 쓰면 안 될 때 적합합니다. 마이크로컨트롤러 펌웨어, 테스트 픽스처, 바이너리에 컴파일해 넣는 작은 키나 인증서, 조회 테이블이 그렇습니다. 대가는 소스 파일 크기입니다. 바이트마다 약 여섯 글자(0xde, )가 들어가 Base64의 네 배가 넘으므로, 10 KB 데이터는 약 60 KB의 코드가 됩니다.

자주 바뀌거나 몇 KB보다 큰 데이터라면 Base64 문자열을 유지하고 시작할 때 디코딩하세요.

import base64
data = base64.b64decode("3q2+7wABAgOAf/8K")
byte[] data = Convert.FromBase64String("3q2+7wABAgOAf/8K");
byte[] data = java.util.Base64.getDecoder().decode("3q2+7wABAgOAf/8K");
const data = Uint8Array.from(atob("3q2+7wABAgOAf/8K"), c => c.charCodeAt(0));

최신 브라우저에는 Uint8Array.fromBase64()도 있으며, Uint8Array.fromBase64와 toBase64에서 다룹니다. C#, Java, Go, Rust, Python 언어별 페이지에서 디코더를 더 자세히 볼 수 있습니다.

자주 생기는 문제

  • “올바른 Base64이(가) 아님”. 문자열에 알파벳 밖의 문자가 있거나 잘렸습니다. 메시지에 위치가 나오며, 깨진 문자열의 문제는 Base64 검사기가 설명해 줍니다.
  • C++의 “narrowing conversion” 오류. char data[] = {0xde};는 C++11 이상에서 컴파일되지 않습니다. 대부분의 플랫폼에서 일반 char는 부호가 있어 222가 들어가지 않기 때문입니다. 생성된 unsigned char를 그대로 쓰거나 uint8_t를 쓰세요.
  • 출력이 너무 큽니다. 큰 파일은 xxd -i file.bin으로 C 배열을 바로 출력할 수 있고, C23 #embed 같은 임베딩 기능을 쓰면 배열 자체가 필요 없습니다.

자주 묻는 질문

C#에서 Base64 문자열을 바이트 배열로 바꾸려면 어떻게 하나요?

런타임에는 byte[] data = Convert.FromBase64String(s);를 쓰세요. 바이트를 코드에 직접 넣으려면 여기서 언어를 C#으로 설정하고 new byte[] { ... } 선언을 소스에 붙여넣으세요.

Java 배열에 음수가 들어 있는 이유는 무엇인가요?

Java의 byte는 부호가 있어서 −128부터 127까지를 담습니다. 0x80부터 0xff까지의 바이트는 −128부터 −1로 쓰이므로 0xde는 -34로 나타납니다. 비트는 같으며, b & 0xff로 부호 없는 값을 되찾을 수 있습니다.

Python에서 Base64를 바이트로 바꾸려면 어떻게 하나요?

base64.b64decode(s)가 bytes 객체를 돌려줍니다. 그 값을 b'\x..' 리터럴로 적어서 받고 싶다면 여기서 언어를 Python으로 설정하세요.

JavaScript 출력은 Uint8Array인가요?

네. hex 값이 든 const data = new Uint8Array([...])입니다. 브라우저와 Node.js에서 모두 실행되며, Node에서 API가 Buffer를 요구한다면 Buffer.from(data)로 감싸면 됩니다.