今回はプチネタ。
Javaで、Base64エンコードをしたり、デコードしたりする。
これには、Commons Codecというライブラリを使う。
こいつにはBase64エンコード/デコード他、色々と便利な機能がある。
例えば、byte[]型の値を、16進文字列に変えてくれる機能もある。
では、以下にサンプルを示そう。
- import org.apache.commons.codec.binary.Base64;
- import org.apache.commons.codec.binary.Hex;
- public class Base64Samples {
- public static void main(String[] args) {
- String str = "あいうえお";
- byte[] encoded = Base64.encodeBase64(str.getBytes());//エンコード処理
- String encodedStr = Hex.encodeHexString(encoded);//エンコード結果のbyte[]を文字列にする
- byte[] decoded = Base64.decodeBase64(encoded);//デコード処理
- String decodedStr = new String(decoded);//デコード結果のbyte[]を文字列にする
- System.out.println(encodedStr + ":" + decodedStr);
- }
- }
このようになる。以下に詳しく説明していく。
byte[] Base64.encodeBase64(byte[])
このメソッドは文字列のBase64エンコード処理を行う。
注意点は、入力がbyte[]だという事。文字列を入れる場合は、getBytes()
を使う必要がある。
そして、出力結果もbyte[]なので、そのまま他の事に使う場合はいいが、
文字列と連結する場合には、次の「Hex.encodeHexString
」を使う。
byte[] Hex.encodeHexString(byte[])
このメソッドは、byte[]を、16進文字列にする。
例えば{15,0}
であれば、「0f00」になる。
こいつを使えば、エンコードしたbyte[]を文字列と連結したり、
出力できるようになる。
byte[] Base64.decodeBase64((byte[])
このメソッドはBase64デコード処理を行う。
エンコードしたバイト列を元に戻す事ができる。
ここで注意が必要なのだが、戻り値がbyte[]だということだ。
文字列化するには、new String()の引数にしてやる必要がある。
最新コメント