在Java中将十六进制字符串转换为无符号字节数组

时间:2011-12-08 14:48:40

标签: java hex

我得到14字节的十六进制字符串,例如a55a0b05000000000022366420ec。 我使用javax.xml.bind.DatatypeConverter.parseHexBinary(String s)来获取14个字节的数组。 不幸的是,这些是非原始字节,例如最后一个0xEC = 236。

但我想将它们与这样的字节进行比较: if(byteArray[13] == 0xec) 由于235大于有符号字节,因此if语句将失败。 知道如何在java中解决这个问题吗? THX!

3 个答案:

答案 0 :(得分:9)

尝试if(byteArray[13] == (byte)0xec)

答案 1 :(得分:3)

您可以将字节提升为整数:

if((byteArray[13] & 0xff) == 0xec)

答案 2 :(得分:0)

因为java不支持(至少使用原语)任何无符号数据类型,所以你应该使用int作为数据类型来解析字符串..

        String str = "a55a0b05000000000022366420ec";
        int[] arrayOfValues = new int[str.length() / 2];
        int counter = 0;
        for (int i = 0; i < str.length(); i += 2) {
            String s = str.substring(i, i + 2);
            arrayOfValues[counter] = Integer.parseInt(s, 16);
            counter++;
        }

使用arrayOfValues ...