プロ生ちゃんとお勉強するよ~

プロ生ちゃんと一緒にプログラミングをお勉強できるサイトです。

Base64デコード

Base64エンコードについては、前回勉強したよね。

え~!! 忘れちゃったの~。

もういちど、Base64エンコードのページを読み直して、理解してきてほしいなぁ。

それでは、Base64デコードについて説明するね。

Base64デコードは、Base64エンコードと逆の事を行います。Base64で印刷可能な文字列に変換されていたデータを元のバイナリデータに戻します。

エンコードでは、6bitで区切ったデータを4文字分の文字列に変換していましたので、デコードでは4文字ずつ取得して、1文字ずつ 6bitのデータに変換してつなげていきます。

それではBase64にエンコードされた "aGVsbG8=" をデーコードしていきます。

4文字ずつ文字をデータに変換していきます。変換に使用するテーブルは、Base64エンコードで解説しているのでそちらを参照してね。

文字列 値(16進数) 値(2進数)
a 0x1a 011010
G 0x06 000110
V 0x15 010101
s 0x1c 101100
文字列 値(16進数) 値(2進数)
b 0x1b 011011
G 0x06 000110
8 0x3c 1111xx
= ---- xxxxxx

'='以外の全てのデータを連結すると以下のデータになります。 0110100001100101011011000110110001101111xx

このデータを8bit毎に区切ります。

区切ったデータ(2進) 値(16進数) Shift-JISコード
01101000 0x68 h
01100101 0x65 e
01101100 0x6C l
01101100 0x6C l
01101111 0x6F o
xx ---- 8bitに満たないものは無視

ここで8bitに満たなかったデータは、エンコードの際に追加されたデータの'0'なので捨ててしまいます。

最後に8bit毎に区切ったデータを連結すれば、0x68, 0x65, 0x6c, 0x6c, 0x6fの元データ"hello"に戻ります。

"aGVsbG8="がbase64デコードされると、"hello"になる仕組みが理解できましたか?

え~解らなかったの~!?

ごめんね~解らなかったら、もう一度、読み直してみてね!!。

本キャラクターに関する著作権およびその他一切の権利は、プログラミング生放送および、それらの関連企業・関係者に帰属しています。これは、著作権およびその他一切の権利を放棄・譲渡するものではありません。





プロ生ちゃんとお勉強するよ~

プロ生ちゃんと一緒にプログラミングをお勉強できるサイトです。