2017/05/05
自分用メモ
データを6ビット毎に分割し、その値に対応する文字に変換するエンコード。
RFC4648( https://tools.ietf.org/html/rfc4648 )で定義されている。
例えば文字列“hgotoh.jp”は“aGdvdG9oLmpw”にエンコードされる。
| 文字 | “h” | “g” | “o” | “t” | “o” | “h” | “.” | “j” | “p” | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 文字コード | 0x68 | 0x67 | 0x6f | 0x74 | 0x6f | 0x68 | 0x2e | 0x6a | 0x70 | |||
| 01101000 01100111 01101111 | 01110100 01101111 01101000 | 00101110 01101010 01110000 | ||||||||||
| 分割 | 011010 | 000110 | 011101 | 101111 | 011101 | 000110 | 111101 | 101000 | 001011 | 100110 | 101001 | 110000 | 
| エンコード後 | a | G | d | v | d | G | 9 | o | L | m | p | w | 
24ビットを4分割し4文字にエンコードするが、分割して6ビットに満たない箇所は0のビットで埋め、4文字に満たない部分を“=“で埋める(パディング)
例えば、”jp”は“anA=“にエンコードされる。
| 文字 | “j” | “p” | ||
|---|---|---|---|---|
| 文字コード | 0x6a | 0x70 | ||
| 01101010 01110000 | ||||
| 分割 | 011010 | 100111 | 0000 → 000000 | |
| エンコード後 | a | n | A | = | 
BASE64 はメールのMIMEパート等のデータ表現で適用、URL and Filename safe BASE64 はURLやファイル名等の”+“や”/“が特別の意味を持つ場所に適用する。
| 2進数 | 10進数 | Base64 | URL and Filename safe Base64 | 
|---|---|---|---|
| 000000 | 0 | A | A | 
| 000001 | 1 | B | B | 
| 000010 | 2 | C | C | 
| 000011 | 3 | D | D | 
| 000100 | 4 | E | E | 
| 000101 | 5 | F | F | 
| 000110 | 6 | G | G | 
| 000111 | 7 | H | H | 
| 001000 | 8 | I | I | 
| 001001 | 9 | J | J | 
| 001010 | 10 | K | K | 
| 001011 | 11 | L | L | 
| 001100 | 12 | M | M | 
| 001101 | 13 | N | N | 
| 001110 | 14 | O | O | 
| 001111 | 15 | P | P | 
| 010000 | 16 | Q | Q | 
| 010001 | 17 | R | R | 
| 010010 | 18 | S | S | 
| 010011 | 19 | T | T | 
| 010100 | 20 | U | U | 
| 010101 | 21 | V | V | 
| 010110 | 22 | W | W | 
| 010111 | 23 | X | X | 
| 011000 | 24 | Y | Y | 
| 011001 | 25 | Z | Z | 
| 011010 | 26 | a | a | 
| 011011 | 27 | b | b | 
| 011100 | 28 | c | c | 
| 011101 | 29 | d | d | 
| 011110 | 30 | e | e | 
| 011111 | 31 | f | f | 
| 100000 | 32 | g | g | 
| 100001 | 33 | h | h | 
| 100010 | 34 | i | i | 
| 100011 | 35 | j | j | 
| 100100 | 36 | k | k | 
| 100101 | 37 | l | l | 
| 100110 | 38 | m | m | 
| 100111 | 39 | n | n | 
| 101000 | 40 | o | o | 
| 101001 | 41 | p | p | 
| 101010 | 42 | q | q | 
| 101011 | 43 | r | r | 
| 101100 | 44 | s | s | 
| 101101 | 45 | t | t | 
| 101110 | 46 | u | u | 
| 101111 | 47 | v | v | 
| 110000 | 48 | w | w | 
| 110001 | 49 | x | x | 
| 110010 | 50 | y | y | 
| 110011 | 51 | z | z | 
| 110100 | 52 | 0 | 0 | 
| 110101 | 53 | 1 | 1 | 
| 110110 | 54 | 2 | 2 | 
| 110111 | 55 | 3 | 3 | 
| 111000 | 56 | 4 | 4 | 
| 111001 | 57 | 5 | 5 | 
| 111010 | 58 | 6 | 6 | 
| 111011 | 59 | 7 | 7 | 
| 111100 | 60 | 8 | 8 | 
| 111101 | 61 | 9 | 9 | 
| 111110 | 62 | + (プラス) | - (ハイフン) | 
| 111111 | 63 | / (スラッシュ) | _ (アンダースコア) |