Base64とHexでデータをエンコード/デコードする方法
Base64、Base64-URL、Base32、Hexの使いどころ・理由。バイナリがASCIIにならないときの対処。末尾ゼロを落とさずデコードするコツ。

このガイドと一緒に使うと便利なツール:
なぜ重要か
バイナリはテキストしか受け付けないシステムを通過しなければなりません。代表例はJSONリクエストに添付する小さいPNG。Base64は3バイトを4 ASCII文字にします—安全転送の代償です。バリアント(+/対-_、パディング有無)を間違えるとデコードはゴミを吐きます。どのコーデックかとその癖を押さえると、1行イライラから無イベントにできます。
実際の3つのシーン
ファイルをBase64化してJSONへ。サーバーでバイトへ戻します。
1往復で済む
ドットで分割し、ヘッダーとペイロードをBase64-URLデコードしてからシークレットで署名確認。
署名を検証
hexペアを貼ればツールが生バイトを出力し、続けて解析できます。
さらに解析可能なバイナリへ
手順
エンコード/デコードツールを開きます。
エンコード形式を選ぶ
Base64(RFC 4648標準)、Base64-URL(URLセーフ)、Base32、Hex。アルファベットとパディング規則がそれぞれ異なります。
入力を入れる
テキストまたはファイルを左ペインへ。ASCIIではなくバイナリファイルなら入力モードを切り替えます。
Encode と Decode を切り替える
対称的です—エンコード→デコードで元に戻ります。ゴミになるなら入力が別バリアントの可能性があります。
UTF-8と生バイトどちらで出力するか選ぶ
テキストならUTF-8でデコード。画像・アーカイブなどバイナリはファイルとしてダウンロードします。
コピーまたはダウンロード
プレーンテキストはクリップボードへ、バイナリ結果は推定MIMEでダウンロードします。
バイト
Hello, GitHub?エンコード
Standard: SGVsbG8sIEdpdEh1Yj8=
URL-safe: SGVsbG8sIEdpdEh1Yj8
(no padding, '+'/'/' replaced with '-'/'_')バイト
\x00\x0F\xA5\xFFHex
00 0F A5 FF
実践テクノ
- JWTの各セグメントはパディングなしBase64-URL。 標準Base64デコーダが文句を言うならURLセーフプロファイルへ。
- デコード前に空白を除去。 PDFから貼ったBase64にはソフト改行があり、古いデコーダが拒否することがあります。
- パケットキャプチャではhexが読みやすい。転送ならBase64優先。 Hexは元サイズの2倍、Base64は約1.33倍です。
- 整合性確認: デコード後、ハッシュジェネレーターでハッシュしてソースと突き合わせます。
よくある落とし穴
よくある誤り
デコード後のテキストに変な文字や「?」
有効バイナリだがUTF-8として無効です。出力を「UTF-8テキスト」から「生バイト」/ファイルダウンロードに切り替えます。
よくある誤り
メール由来の末尾「=」付きBase64が拒否される
エンコーダによってパディング=の有無が違います。明示パディングで再エンコードするか、=を削除して宛先と揃えます。
よくある誤り
区切り付きHex(00:0F:A5)がデコードできない
コロン・スペース・改行を剥がします—デコーダは純粋なhex桁を期待します。
向いていない用途
- ハッシュ(一方向・検証・パスワード保存)はハッシュジェネレーター。Base64は可逆でありハッシュではありません。
- 機密の暗号化—Base64は暗号ではありません。実際のcipherと鍵の保護へ。
- 圧縮—Base64はデータを膨らませます。サイズが重要ならgzipしてからBase64。
FAQ
Base64が33%増になる理由は?
3バイト入力が64文字アルファベットから4文字にマップされます。4/3≈1.33倍。3の倍数でない入力ではパディングでわずかに増えます。
Base64はハッシュ関数?
いいえ。Base64は可逆エンコードです。文字列さえあれば誰でも元データを復元できます。
データは送信されますか?
いいえ。エンコード/デコードはブラウザ内。ファイルのアップロードはありません。
次のステップ
- バイナリ出力はハッシュジェネレーターで整合チェック。
- APIペイロードへの署名にはHMACジェネレーター。
- CDNなしでHTML/CSSに画像を埋め込むなら画像→Base64。