ファイルを選択
  1. base64hub
  2. その他の基数
  3. Base64 → バイト配列

Base64 をバイト配列に変換(C、Java、Python、Go、C#)

Base64 を貼り付けると、デコードしたバイト列を、ソースコードにそのまま貼れる配列リテラルとして出力します。言語は出力の下で C/C++、JavaScript、Python、Java、Go、C#、Rust から選べます。

無料 登録不要・制限なし ローカル アップロードなし 7 言語に対応(C から Rust まで) 更新日 2026/10/27
入力 0バイト 0 B出力 0

ブラウザ内で処理されます。このページがデータをどこかに送信することはできません – その根拠

Base64 をバイト配列に変換する方法

  1. 入力欄に Base64 を貼り付けます。空白、パディングの欠落、URLセーフの文字、data: 接頭辞も受け付けます。
  2. 出力の下の 言語 で出力先を選びます。C / C++、JavaScript、Python、Java、Go、C#、Rust があり、ページを開いた時点では JavaScript が選ばれています。
  3. 出力をコピー して、宣言をコードに貼り付けます。data の名前は適宜変更してください。
  4. ツール上部の 変換元 と 変換先 のメニューで、入力や出力の形式を切り替えられます。たとえば Base64 の代わりに 16進数を読み込むこともできます。

配列から Base64 に戻すには、これらの形式をすべて読み込める バイト配列を Base64 に変換 を使ってください。

言語ごとの出力

Base64 の 3q2+7wABAgOAf/8K をデコードすると、de ad be ef 00 01 02 03 80 7f ff 0a の 12 バイトになります。言語 の設定ごとの出力は次のとおりです。

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
];

出力についての補足です。

  • 配列は 1 行 12 個の値で折り返します。Python は b'...' 文字列 1 つにつき 16 バイトを書き、それより長いデータは括弧の中で連結します。Python はコンパイル時にこれを結合します。
  • Java が符号付きの 10進数を使うのは、0x7f を超える値すべてに (byte) 0xde のようなキャストが必要になるからです。-34 と 0xde はビットとしては同じです。
  • C と Rust は長さを宣言します。C の配列は unsigned char なので、127 を超える値も警告なしで収まります。
  • Go では最後の値の後にもカンマが付きます。閉じ括弧が独立した行にある場合、コンパイラがこれを要求するためです。
  • Python は表示可能な文字も含めてすべてのバイトを \x.. で書くので、リテラルが読みやすく、差分も取りやすくなります。

バイト列を埋め込むか、Base64 のまま保つか

バイト配列リテラルが適しているのは、プログラムに Base64 デコーダーがない場合や、デコードに時間を使うべきでない場合です。マイコンのファームウェア、テストフィクスチャ、バイナリに組み込む小さな鍵や証明書、ルックアップテーブルなどがこれにあたります。代償はソースファイルのサイズです。1 バイトあたり約 6 文字(0xde, )と Base64 の 4 倍以上になるので、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 ですか?

はい。16進数の値を使った const data = new Uint8Array([...]) です。ブラウザでも Node.js でも動きます。Node で API が Buffer を必要とする場合は、Buffer.from(data) で包んでください。