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