Base64形式

■ はじめに

 昔のノートを整理していたら、
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=