バイト配列を Base64 に変換する手順
- 配列を入力欄に貼り付けます。宣言全体のままでかまいません。型名、変数名、括弧、セミコロンは読み飛ばします。
- 出力に Base64 が表示されます。出力の下の パディング(=) と 折り返し で形式を調整できます。
- 出力をコピー を押すか、変換先 のメニューを Hex(16進数)や Base64URL など別の形式に切り替えます。
- Base64 を指定した言語の宣言に戻すには、Base64 からバイト配列へ を使います。
貼り付けられるもの
下の行はどれも、H、i、! の 3 バイトを表す Base64 の SGkh になります。
| 言語 | 入力 |
|---|---|
| C、C++ | unsigned char d[] = {0x48, 0x69, 0x21}; |
| JavaScript | new Uint8Array([72, 105, 33])、Uint8Array.from([72, 105, 33])、Buffer.from([72, 105, 33]) |
| Python | b'Hi!'、b'\x48\x69\x21'、bytes([72, 105, 33])、bytearray(b'Hi!') |
| Java | new 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 付きの 16進数、0b 付きの 2進数、0o 付きの 8進数、'H' のような ASCII の文字リテラルのどれでもかまいません。u8、U、L などの型サフィックスは無視します。Python のリテラルは、\n、\t、8 進エスケープを含むエスケープ規則をすべて適用して読み、括弧内の複数行リテラルのように b'...' が連続していればつなげます。
符号付きバイトと値の範囲
Java には符号なしの byte がないため、Java や Kotlin で出力した配列には負の数が含まれます。変換ツールは −128〜−1 を 0x80〜0xff のバイトとして読みます。
| 入力 | バイト列 | Base64 |
|---|---|---|
{72, 105, -1} | 48 69 ff | SGn/ |
new byte[]{72, 105, (byte) 0xff, -1} | 48 69 ff ff | SGn//w== |
[-34, -83, -66, -17] | de ad be ef | 3q2+7w== |
255 より大きい値や −128 より小さい値があると、その値と位置を示して変換が止まります。072 のように先頭にゼロが付いた数値は、C の 8 進数の 58 ではなく 10進数の 72 として読みます。バイト値のリストを貼り付ける人の多くが意図するのはこちらだからです。
このページで読めない形式
- Node のコンソール出力
<Buffer 48 69 21>。 これらの値は0xのない 16進数ですが、変換ツールは 10進数として読んでしまいます。Bufferと>の間の部分を 16進数から 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])、複数行に分けた複数のリテラルのどれでも動作します。
「1 バイトに収まりません」と表示されるのはなぜですか?
値が 255 より大きいか、−128 より小さいからです。多くの場合、その配列は実際には short[] や int[] のような 16 ビットや 32 ビットの整数の配列で、先にバイト順を決めてバイトに分割する必要があります。
0x のない数値は 16進数として読まれますか?
いいえ。48 だけなら 10進数の 48 です。16進数の値には 0x 接頭辞が必要です。接頭辞なしの 16進数を読める 16進数から Base64 へ に貼り付けてもかまいません。