1

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

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

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

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

String str1 = "D4";

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

byte[0] = convertToByte(str1);

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

4

1 回答 1

1

您应该只能使用Integer#parseInta radixof 16(hexadecimal) 将 a 转换String为 an int(然后您可以将其转换为 abyte并存储在您的数组中):

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

输出:

-44

注意:Byte#parseByte不能在您的示例中Byte#parseByte使用, as 在Integer#parseInt内部使用并解析D4212,这不是有符号的有效值byte

于 2019-04-15T00:43:39.940 回答