我正在使用Android手机与BLE设备通信。
为库发送数据的方法需要byte [], 共享静态示例代码段之一:
public static final byte dataRequest[] = { 0x23, 0x57, 0x09, 0x03, (byte) 0xD4};
sendDataToDevice(dataRequest);
例如,我从用户那里接收的数据是字符串形式的
String str1 = "D4";
现在我的问题是,如何将此String值(实际上是String数据类型中的十六进制值)转换为字节,以便我可以存储这些动态String值并进行转换,然后将其插入byte []中,如< / p>
byte[0] = convertToByte(str1);
其中byte [0]必须将值存储为0xD9或类似于静态示例中给出的格式。
答案 0 :(得分:1)
您应该只可以将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
的有效值。