从一个字节获取半个字节

时间:2015-03-13 08:46:45

标签: java byte bytearray

我有一些字节来自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 ....如何在不转换为字符串的情况下获得该结果?

2 个答案:

答案 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);
    }