在Java中将十六进制字符串转换为无符号字节数组
我得到14字节的十六进制字符串,例如a55a0b05000000000022366420ec。 我使用在Java中将十六进制字符串转换为无符号字节数组,java,hex,Java,Hex,我得到14字节的十六进制字符串,例如a55a0b05000000000022366420ec。 我使用javax.xml.bind.DatatypeConverter.parseHexBinary(字符串s)获得一个14字节的数组。 不幸的是,这些是非原始字节,比如最后一个0xEC=236 但我想将它们与如下字节进行比较: if(byteArray[13]==0xec) 由于235大于有符号字节,因此该if语句将失败。 你知道如何用java解决这个问题吗? 谢谢 尝试如果(byteArray[1
javax.xml.bind.DatatypeConverter.parseHexBinary(字符串s)
获得一个14字节的数组。
不幸的是,这些是非原始字节,比如最后一个0xEC
=236
但我想将它们与如下字节进行比较:
if(byteArray[13]==0xec)
由于235大于有符号字节,因此该if语句将失败。
你知道如何用java解决这个问题吗?
谢谢 尝试
如果(byteArray[13]==(byte)0xec)
可以将字节提升为整数:
if((byteArray[13] & 0xff) == 0xec)
由于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++;
}
String str=“a55a0b05000000000022366420ec”;
int[]arrayOfValues=新的int[str.length()/2];
int计数器=0;
对于(int i=0;i
使用
arrayOfValues
…将其视为无符号字节,比较结果相同。