以下のメソッドを使えばよい。引数にバイト列 (byte[]) を与えると、そのバイト列を 16 進数表記に変換した文字列が返される。
public String byteToString(byte[] b) {
StringBuffer s = new StringBuffer();
for (int i = 0; i < b.length; i++) {
int d = b[i];
d += d < 0 ? 256 : 0; // byte 128-255
if (d < 16) { //0-15 16
s.append("0");
}
s.append(Integer.toString(d, 16));
}
return s.toString();
}
または、以下のようにしてもよい。
public String byteToString(byte[] b) {
if (b == null || b.length <= 0) return null;
byte ch = 0x00;
String pseudo[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
StringBuffer s = new StringBuffer(b.length * 2);
for(int i = 0; i < b.length; i++) {
ch = (byte) (b[i] & 0xf0);
ch = (byte) (ch >>> 4);
ch = (byte) (ch & 0x0f);
s.append(pseudo[(int) ch]);
ch = (byte) (b[i] & 0x0f);
s.append(pseudo[(int) ch]);
}
return s.toString();
}
トラックバック URL:
https://perltips.twinkle.cc/trackback/75