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

时间:2019-04-15 00:34:09

标签: java arrays hex byte number-systems

我正在使用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或类似于静态示例中给出的格式。

1 个答案:

答案 0 :(得分:1)

您应该只可以将Integer#parseIntradix(十六进制)一起使用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的有效值。