KDOC 463: Base64エンコードでaがYQ==になるのはなぜか?
この文書のステータス
- 作成
- 2025-10-27 貴島
- レビュー
- 2025-10-27 貴島
概要
インターネットまわりでちょくちょく出てくるbase64だが、よく知らない。対応関係がさっぱりわからない。
echo -n "a" | base64
YQ==
base64ってなんぞ??理解のために実装してみた #base64 - Qiitaを参考に試した。
echo -n "a" | xxd -b
00000000: 01100001 a
- 011000 01
- 6ビットに分ける
- 011000 010000
- 6ビットに足りない分を0で埋める
- Y Q
- ビットと文字の対応表を見て変換する
YQ==- 4文字に分けて足りない分を
=で埋める
- 4文字に分けて足りない分を
関連
抽象。
- 区切りの単位が合わない分を詰め物で埋めて変換する
関連。
- 類似: KDOC 80: 「あ」がどうして343 201 202になるのか。バイトのビット列を区切り直して符号化する例。UTF-8 は2バイト目以降に6ビットずつ詰める
- 類推: KDOC 227: フィールド定義の順番によってメモリサイズが変わることがある。単位の区切りを揃えるために詰め物を入れる点が共通する