エンコード方式の1つで、64種類の印字可能な英数字記号を用いてデータをエンコードします。広く使われるエンコード方式であり、例えば電子メールのマルチバイト文字のエンコードなどに用いられます。そのほか、画像ファイルのエンコード、Basic認証などに用いられています。別の半角英数に置き換えられていることがわかります。/)とパディング用の文字(=)にエンコードします。後述の通り、6bitずつに分解して対応する64種の文字に置き換えていくので、データサイズにかかわらずエンコード後のデータサイズは約33%(6bit->8bitなので)増加します。約33%となっているのはパディング用の文字(=)が追加される場合があるためです。基本3割増しのデータ量になることは覚えておきましょう。すべてのデータをエンコードするので元データがテキストだったとしても、読める形にはなりません。印字可能な文字はそのまま出力することと比べ異なる点です。読める形を保とうとするエンコード方式の為、エンコード対象のデータによってはデータサイズが増減しますが、Base64は一律約33%データサイズが増加します。アルゴリズムの解説エンコードエンコード対象のデータを6bitずつに分解します。データが6bitに足りない分は0で埋めます。010000分解して得られた各6bitのデータを、4文字ずつ対応表を使って文字に置き換えます。YQ==エンコード後のBase64の文字数は必ず4倍数になります。デコードデコードはエンコードの手順を逆から実行していきます。対応表からbitデータに置き換えます。0100008bitに満たない末尾の0は切り捨てます。01100001対応表Base64で使う対応表は次の通りです。6bitに分解したデータを対応表に突き合わせます。デコード時もこの対応表を使うことになります。/サンプルコード文字列を渡すと、Base64でエンコードした文字列を返してくれるエンコード処理と同じくデコード処理の実装のサンプルコードです。文字列をエンコード・デコードする場合にはその文字列の文字コードを指定する必要がありますが、子のサンプルではUTF8固定で処理しています。対応表は64種の文字による配列としています。インデックスとその値が対応表の組み合わせに当たります。インデックスを探します。処理の詳細はコメントにある通りです。基本は上記アルゴリズムをそのままに実装しています。そこまで難しくはないかと思います。