MB blog

エンタープライズソフトウェアのプリセールス 兼 小さな宿泊施設のマーケターによる、ちょっとテクニカルな話題のメモです。

バイト配列の中身を16進数として表示する


スポンサードリンク

何度必要に駆られても、覚えられずにそのたびにぐぐっている(そしてそのたびに過去の自分のメモに引っかかりorzとなる)定石的な手順を、改めて記録しておきます。

public class ByteArrayToHexString {

    public static void main( String args[] ){

        // 適当なバイト配列を用意
        byte[] byteArray = "Michigan".getBytes();

        // 結果を入れるためのバッファを用意
        StringBuffer sb = new StringBuffer();

        System.out.println( "byteArray: " + byteArray );


        int i;
        for ( byte b : byteArray ){

        	// バイトを自然数に変換... するときは注意が必要
        	// もし b が負数の場合を考慮して、0xFFとの論理積をとり下位8bitの値だけをみるように
        	i = 0xFF & (int)b;

        	// これを、16進数で表現
              String str = Integer.toHexString( i );

            // バッファに追加
            sb.append(str);
        }

        System.out.println( sb.toString() );
        // 出力結果 : 4d6963686967616e
    }
}

多分独学でJavaで遊んでいても、こんなふうにbyteの操作をしようとなかなか思わないはずなので、必要に迫られながら新しいことを学べるという点で、仕事って素敵ですよねぇ・・・?