- - PR -
byte配列からの16進数出力
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-09-30 10:14
byte配列の中身を16進数でStringへ出力したいのですがその方法がわかりません。
例えば byte[] b = {"0x95","0x96"}; と値の入ったBYTE配列から Byte.toStringを使って それぞれの値を取り出した場合 -107,-106となってしまいます。 これを "95","96"もしくは"0x95","0x96"のように取り出すには どうすればいいのでしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2003-09-30 10:39
下記のように、java.lang.Integr#toHexString(int)を使用するだけですね。 //ByteTest.java public class ByteTest{ public static void main(String args[]){ byte[] b = {(byte)0x95,(byte)0x96}; for(int i=0;i<b.length;i++) System.out.println(Integer.toHexString(b[i])); } } //実行結果 C:\java>java ByteTest ffffff95 ffffff96 | ||||
|
投稿日時: 2003-09-30 13:57
byte型の上限である127を超えているため負の値となってます。
>System.out.println(Integer.toHexString(b[i])); ここは System.out.println(Integer.toHexString(b[i] & 0xff)); このようにして正の値に直しておくのがお望みの挙動かと思われます。 | ||||
|
投稿日時: 2008-04-24 14:49
検索してここにたどりついたのですが、Java5以降で良い方法があったので書いておきます。
※ゼロ埋めもします。 System.out.printf("%02x", b[i]); System.out.print(String.format("%02x", b[i])); |
1