我有一些字节来自SHA-512生成的字节数组。
484c1514b468429967aa0c8e2ab6d99c14e7cd4a45605cb834ebfd3612a0cc9184510d8d0a9c92e636d82c065fa2db0e05ef5c2518153a6c4ca9eebbe8d7b475
当我在下面迭代时;
for(byte x = 0; x < s512in.length; x++){
System.out.println(String.format("%02X ", s512in[x]) + " );
}
我可以获得48,4C,15 ....但我希望从字节数组中获得4,8,4,C ....如何在不转换为字符串的情况下获得该结果?
答案 0 :(得分:5)
byte[] data = "nibbles".getBytes(StandardCharsets.US_ASCII);
for(byte b : data) {
int high = (b & 0xf0) >> 4;
int low = b & 0xf;
System.out.format("%x%n", high);
System.out.format("%x%n", low);
}
答案 1 :(得分:-2)
使用如下。
try {
byte[] data = "nibbles".getBytes("UTF-8");
for (int i = 0; i < data.length; i++) {
String temp = Integer.toString((data[i] & 0xff) + 0x100, 16)
.substring(1);
System.out.println(temp);
}
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}