解説
「BASE64」は、メールでバイナリファイルを送るための方式です。現在では、メール以外でも、テキストしか処理できない様々な場所で利用されています。たとえば、HTMLファイルに画像などを埋め込む際には、BASE64形式で変換した画像を指定します。
バイナリファイルのBASE64への変換は、以下の手順で行ないます。
データは01の連続で表されている。 01010111111100000010101000000011 ↓ データを、6個ずつ(6ビットずつ)に分割する。 010101 111111 000000 101010 000000 11 ↓ 末尾も6個になるように0で埋める。 010101 111111 000000 101010 000000 110000 ↓ 変換表により文字に変換する。 V/AqAw ↓ 文字を4個ずつに分割する。 V/Aq Aw ↓ 末尾も4個になるように=記号で埋める。 V/Aq Aw== ↓ BASE64文字列の完成。 V/AqAw==
変換表は、以下のようになっています。
10進 | 2進 | 文字 |
---|---|---|
0 | 000000 | A |
1 | 000001 | B |
2 | 000010 | C |
3 | 000011 | D |
4 | 000100 | E |
5 | 000101 | F |
6 | 000110 | G |
7 | 000111 | H |
8 | 001000 | I |
9 | 001001 | J |
10 | 001010 | K |
11 | 001011 | L |
12 | 001100 | M |
13 | 001101 | N |
14 | 001110 | O |
15 | 001111 | P |
16 | 010000 | Q |
17 | 010001 | R |
18 | 010010 | S |
19 | 010011 | T |
20 | 010100 | U |
21 | 010101 | V |
22 | 010110 | W |
23 | 010111 | X |
24 | 011000 | Y |
25 | 011001 | Z |
26 | 011010 | a |
27 | 011011 | b |
28 | 011100 | c |
29 | 011101 | d |
30 | 011110 | e |
31 | 011111 | f |
32 | 100000 | g |
33 | 100001 | h |
34 | 100010 | i |
35 | 100011 | j |
36 | 100100 | k |
37 | 100101 | l |
38 | 100110 | m |
39 | 100111 | n |
40 | 101000 | o |
41 | 101001 | p |
42 | 101010 | q |
43 | 101011 | r |
44 | 101100 | s |
45 | 101101 | t |
46 | 101110 | u |
47 | 101111 | v |
48 | 110000 | w |
49 | 110001 | x |
50 | 110010 | y |
51 | 110011 | z |
52 | 110100 | 0 |
53 | 110101 | 1 |
54 | 110110 | 2 |
55 | 110111 | 3 |
56 | 111000 | 4 |
57 | 111001 | 5 |
58 | 111010 | 6 |
59 | 111011 | 7 |
60 | 111100 | 8 |
61 | 111101 | 9 |
62 | 111110 | + |
63 | 111111 | / |
62、63番目の記号は、使用する環境によって、異なる場合があります。たとえばURLに含める際、+と/は特殊な意味を持つため、他の記号(たとえば_-)を使ったりします。
またメールの添付ファイルに使う場合は、変換したあとの長い文字列の76文字ごとに、改行コードが入ります。
サンプル
HTMLで、BASE64を利用してみます。
ファイルはUTF-8で保存してください。検証はGoogle Chromeで行なっています。
<html> <head> <title>「BASE64」のサンプル</title> <meta charset="UTF-8"> </head> <body> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAGUExURf8AAP//AGwf25wAAADiSURBVHjaYmAgAAACiIGBkYERJwBKAgQQSA0eBQwMAAGELI1sLFwMIIAQbHSboaIAAQRjYXMcWBwggBA0pmVgFkAAwSkGTOeBaYAAQqHQVIApgAAiqAAggAgqAAggggoAAoigAoAAIqgAIIBweROuACCAsAcUgs8AEEDIQY0lIBkZAAIIM1YYUWKLASCAsNmNbBoDQABhV4DEBQggXJEE5wMEEBYFqHyAACKoACCACCoACCCCCgACCF+iBysACCCCJgAEECYfzZsAAURQAUAA4dcB5AEEEMHMCxBABDM/QIABAHLxAsRB6/Q0AAAAAElFTkSuQmCC"> </body> </html>