将字符串转换为十六进制值的字节数组
Converting String to byte array for hex values
我正在使用 Android Phone 与 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 或类似静态示例中给出的格式。
您应该能够使用 Integer#parseInt
和 16
(十六进制)的 radix
将 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
.
的有效值
我正在使用 Android Phone 与 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 或类似静态示例中给出的格式。
您应该能够使用 Integer#parseInt
和 16
(十六进制)的 radix
将 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
.