如何在Java中转换十六进制字符串并保持相同的值。
在C中我有:
char tab[24] = { 0x02, 0x04, 0xF3, 0xFC, 0xFF, 0x06, 0x00, 0xF7, 0x00, 0x00, 0x09, 0xFD, 0xFD, 0x00, 0x03, 0x0A, 0xFD, 0x02, 0xFD, 0x08, 0x08, 0x00, 0x01, 0xFD };
我将其像字符串一样复制到Java中;
String hexString = "0x02, 0x04, 0xF3, 0xFC, 0xFF, 0x06, 0x00, 0xF7, 0x00, 0x00, 0x09, 0xFD, 0xFD, 0x00, 0x03, 0x0A, 0xFD, 0x02, 0xFD, 0x08, 0x08, 0x00, 0x01, 0xFD";
现在我想将其转换为byte[],我找到了一些方法来完成它,但似乎我没有以正确的格式进行转换。
已解决
String[] split = hexString.split(", ");
byte[] arr = new byte[split.length];
for (int i = 0; i < split.length; i++)
{
arr[i] = (byte)(short)Short.decode(split[i]);
}
Short.decode(split[i])
来代替parseShort
,这样如果字符串前面有 "0x",它也会被自动识别。需要注意的是,为了将 Short 类型拆箱,需要进行额外的类型转换。因此,代码可以写成arr[i] = (byte)(short)Short.decode(split[i]);
。 - ajb