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

3
我得到了14个字节的十六进制字符串,比如a55a0b05000000000022366420ec。 我使用javax.xml.bind.DatatypeConverter.parseHexBinary(String s)来获取一个由14个字节组成的数组。 不幸的是,这些都是无符号字节,比如最后一个字节0xEC实际上是236。 但我想将它们与像这样的字节进行比较: if(byteArray[13] == 0xec) 由于235大于有符号字节,所以此if语句将失败。 有什么解决办法吗? 谢谢!

将其视为无符号字节,比较结果相同。 - Peter Lawrey
3个回答

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

3
您可以将字节提升为整数:
if((byteArray[13] & 0xff) == 0xec)

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 一起工作...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接