Base64 を 10進数に変換する方法
- 入力 · Base64 に Base64 を貼り付けます。スペース、改行、URLセーフの文字、パディングの欠落があっても問題ありません。
- 出力 · 10進数バイト にバイト値が表示されます。
- 出力の下で 区切り文字 を選びます。スペース、
,、,、改行から選べます。 - リストを 出力をコピー するか ダウンロード します。10進数バイト → Base64 の切り替えか、10進数を Base64 に変換 で逆方向に変換できます。
例
| Base64 | 10進数バイト | 内容 |
|---|---|---|
SGkh | 72 105 33 | テキスト Hi! |
SGkh/w== | 72 105 33 255 | Hi! と 0xff 1 バイト |
AQA= | 1 0 | 2 バイト。ビッグエンディアンの 16 ビット数値として 256 |
AAAA | 0 0 0 | ゼロバイト 3 つ |
//// | 255 255 255 | すべてのビットが 1 の 3 バイト |
fwAAAQ== | 127 0 0 1 | IPv4 アドレス 127.0.0.1 を 4 つの生のバイトにしたもの |
最後の行は便利な使い方の例です。バイナリ形式では IPv4 アドレスを 4 バイトで保存するので、10進数のリストはおなじみのドット区切りの表記からドットを除いたものになります。
バイト値か、1 つの大きな数か
この変換ツールはバイトを一覧表示します。Base64 の値全体を 1 つの整数として読むと答えが変わり、しかもその答えはバイト順によって決まります。2 バイトの 1 0 は、ビッグエンディアンの数値として読めば 256、リトルエンディアンなら 1 です。どちらが正しいかはデータを作った形式によるので、変換はそれを明示できるコードで行うべきです。
import base64
data = base64.b64decode("AQA=")
list(data) # [1, 0]
int.from_bytes(data, "big") # 256
int.from_bytes(data, "little") # 1
32 ビットのカウンター、タイムスタンプ、大きな ID を入れた Base64 も同様です。10進数のリストはバイトを示し、数値は int.from_bytes や JavaScript の DataView で得られます。
10進数のバイトリストが使われる場面
- JSON。 シリアライザーの中には、バイナリデータを数値の配列として書き出すものがあります。Node の
JSON.stringify(Buffer.from("Hi!"))は{"type":"Buffer","data":[72,105,33]}になります。区切り文字を,にして角括弧で囲めば、同じ形が得られます。 - Python とスプレッドシート。 Python の
list(b)は 10進数の値を表示します。また、数値の列(区切り文字は改行)はそのままスプレッドシートに貼り付けられます。 - マイコンとシリアルモニター。 Arduino のコードや多くのシリアルツールは、バイトを 10進数で表示します。C などの言語で型付きの配列宣言が欲しい場合は、Base64 をバイト配列に変換 がリテラル全体を書き出します。
どこかに貼り付けるのではなく、バイトを読むことが目的なら、各バイトがちょうど 2 文字になる 16進数のほうがたいてい分かりやすいでしょう。Base64 を Hex に変換 を試してください。
コードで Base64 を 10進数に変換する
import base64
list(base64.b64decode("SGkh/w==")) # [72, 105, 33, 255]
Array.from(Buffer.from("SGkh/w==", "base64")).join(", "); // '72, 105, 33, 255'
Buffer のないブラウザでは、Array.from(atob(s), c => c.charCodeAt(0)) で同じ数値が得られます。デコードについては Python と JavaScript のページで詳しく解説しています。
よくある質問
「Base64 を 10進数に」の 10進数とは何を意味しますか?
デコードした各バイトを普通の 10進数で書いたものです。1 バイトは 0~255 の値を持つので、出力はその範囲の数値を 1 バイトにつき 1 つ並べたリストになります。
リストではなく 1 つの数値として Base64 を変換するには?
コードでバイト列を 1 つの整数として読みます。Python なら int.from_bytes(base64.b64decode(s), "big") です。AQA= の場合は 256 になりますが、このページはバイトの 1 0 を一覧表示します。
Base64 からバイトの JSON 配列を得るには?
区切り文字 を , にして、結果を角括弧で囲んでください。SGkh は [72, 105, 33] になり、JSON の配列としてパースできます。
このページで 255 と表示されるところが、Java では -1 になるのはなぜですか?
Java の byte 型は符号付きなので、128~255 のバイトは −128~−1 と表示されます。ビットは同じです。Java で b & 0xff を使えば、ここに表示される 0~255 の値が得られます。