我正在使用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或类似于静态示例中给出的格式。
你应该能够使用Integer#parseInt
与radix
(十六进制)16
将String
转换为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
的有效值。