Base64
Base64は、3バイトを1つの単位としてそこから4文字生成します。3バイトのデータを6ビットごとに取り出しその6ビットから文字を生成します。
生成される文字は、A-Z,a-z,0-9,/,+の64種類になります。もうひとつデータが3の倍数バイトでない時、=(イコール)でパディングします。
00011011 , 00100100 , 01000010
3バイトを6ビットごとにする。
000110 , 110010 , 010001 , 000010
6ビットから文字を生成する。
G, y, R, C
3の倍数バイトで終わらない場合
データが3の倍数バイトで終わらない場合、6ビットのデータが作成できない場合がある。その場合、6ビットのデータを作るため0で埋めて(右側)文字を生成する。4文字に満たない場合、=(イコール)でパディングします。
このためBase64では、必ず4の整数倍の長さになります。
Base64で使用される文字
16進数 | 10進数 | 文字 | 16進数 | 10進数 | 文字 | 16進数 | 10進数 | 文字 | 16進数 | 10進数 | 文字 |
---|---|---|---|---|---|---|---|---|---|---|---|
0x00 | 0 | A | 0x11 | 17 | R | 0x22 | 34 | i | 0x33 | 51 | z |
0x01 | 1 | B | 0x12 | 18 | S | 0x23 | 35 | j | 0x34 | 52 | 0 |
0x02 | 2 | C | 0x13 | 19 | T | 0x24 | 36 | k | 0x35 | 53 | 1 |
0x03 | 3 | D | 0x14 | 20 | U | 0x25 | 37 | l | 0x36 | 54 | 2 |
0x04 | 4 | E | 0x15 | 21 | V | 0x26 | 38 | m | 0x37 | 55 | 3 |
0x05 | 5 | F | 0x16 | 22 | W | 0x27 | 39 | n | 0x38 | 56 | 4 |
0x06 | 6 | G | 0x17 | 23 | X | 0x28 | 40 | o | 0x39 | 57 | 5 |
0x07 | 7 | H | 0x18 | 24 | Y | 0x29 | 41 | p | 0x3A | 58 | 6 |
0x08 | 8 | I | 0x19 | 25 | Z | 0x2A | 42 | q | 0x3B | 59 | 7 |
0x09 | 9 | J | 0x1A | 26 | a | 0x2B | 43 | r | 0x3C | 60 | 8 |
0x0A | 10 | K | 0x1B | 27 | b | 0x2C | 44 | s | 0x3D | 61 | 9 |
0x0B | 11 | L | 0x1C | 28 | c | 0x2D | 45 | t | 0x3E | 62 | + |
0x0C | 12 | M | 0x1D | 29 | d | 0x2E | 46 | u | 0x3F | 63 | / |
0x0D | 13 | N | 0x1E | 30 | e | 0x2F | 47 | v | |||
0x0E | 14 | O | 0x1F | 31 | f | 0x30 | 48 | w | |||
0x0F | 15 | P | 0x20 | 32 | g | 0x31 | 49 | x | |||
0x10 | 16 | Q | 0x21 | 33 | h | 0x32 | 50 | y |