将字符串转换为十六进制值的字节数组

问题描述 投票:1回答:1

我正在使用Android手机与BLE设备通信。

发送库数据的方法需要byte [],共享一个静态示例代码段:

 public static final byte dataRequest[] = { 0x23,  0x57,  0x09,  0x03, (byte) 0xD4};
 sendDataToDevice(dataRequest);

例如,我从用户收到的数据是字符串

String str1 = "D4";

现在我的问题是,如何将此String值(实际上是String数据类型中的十六进制值)转换为byte,以便我可以存储这些动态String值并转换然后将其插入byte [],如,

byte[0] = convertToByte(str1);

其中byte [0]必须将值存储为0xD9或类似于静态示例中给出的格式。

java arrays hex byte number-systems
1个回答
1
投票

你应该能够使用Integer#parseIntradix(十六进制)16String转换为int(然后你可以将其转换为byte并存储在你的数组中):

String str1 = "D4";
byte b = (byte) Integer.parseInt(str1, 16);
System.out.println(b);

输出:

-44

注意:Byte#parseByte不能在你的例子中使用,因为Byte#parseByte在内部使用Integer#parseInt并将D4解析为212,这不是签名的byte的有效值。

© www.soinside.com 2019 - 2024. All rights reserved.