我得到14字节的十六进制字符串,例如a55a0b05000000000022366420ec
。
我使用javax.xml.bind.DatatypeConverter.parseHexBinary(String s)
来获取14个字节的数组。
不幸的是,这些是非原始字节,例如最后一个0xEC
= 236。
但我想将它们与这样的字节进行比较:
if(byteArray[13] == 0xec)
由于235大于有符号字节,因此if语句将失败。
知道如何在java中解决这个问题吗?
THX!
答案 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
...