Преобразование строки в байтовый массив для шестнадцатеричных значений - PullRequest
1 голос
/ 15 апреля 2019

Я использую телефон Android для связи с устройством BLE.

Метод для отправки данных для библиотеки требует байта [], поделиться одним из статических примеров кода:

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

Данные, которые я получаю от пользователя, находятся в строке, например

String str1 = "D4";

Теперь мой вопрос заключается в том, как преобразовать это строковое значение (которое на самом деле является шестнадцатеричным значением в типе данных String) в байты, чтобы я мог сохранить эти динамические строковые значения и преобразовать их, а затем вставить их в byte [] как,

byte[0] = convertToByte(str1);

где byte [0] должен хранить значение как 0xD9 или как формат, указанный в статическом примере.

1 Ответ

1 голос
/ 15 апреля 2019

Вы должны просто иметь возможность использовать 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.

...