■ はじめに
昔のノートを整理していたら、 Base64 について扱っていたので、転記。
【1】Base64
メールでは、テキストデータしか扱えない そのため、画像などのバイナリファイルはそのまま送受信できない => データを文字列に変換する必要がある => その変換ルールの1つとして、「Base64」がある
【2】変換ルール
[1] 元データを24ビット(3バイト)づつで扱う [2] この24ビットを6ビットごとに分ける (半端な部分は、0で埋める) [3] それぞれのデータの示す値に応じて、文字に変換する * 0-25 : A-Z (アルファベット大文字。26文字) * 26-51 : a-z (アルファベット小文字。26文字) * 52-61 : 0-9 (数字。10文字) * 62 : + (記号+。1文字) * 63 : / (記号/。1文字) => RFC2045 [4] 上記[3] を全データに対して繰り返す [5] 4文字づつにならない部分を「=」で埋める
例:「Hello」をエンコード(Base64形式)にする
変換ルール[1]
H => 4 8 e => 6 5 l => 6 C l => 6 C o => 6 F
変換ルール[2]
4 => 0100 8 => 1000 6 => 0110 5 => 0101 6 => 0110 C => 1100 6 => 0110 C => 1100 6 => 0110 F => 1111 [0100 10][00 0110] [0101 01][10 1100] | [0110 11][00 0110] [1111] => [1111]は、0埋めして、[1111 00] 1番目(010010):18 2番目(000110):6 3番目(010101):21 4番目(101100):44 ------------------------- 5番目(011011):27 6番目(000110):6 7番目(111100):60
変換ルール[3]-[5]
1番目(010010):18 => S 2番目(000110):6 => G 3番目(010101):21 => V 4番目(101100):44 => s ------------------------- 5番目(011011):27 => b 6番目(000110):6 => G 7番目(111100):60 => 8 = <= 4つづつならないので「=」
出力結果
SGVsbG8=