Java: Как обеспечить байтовый массив размера 2 после шестнадцатеричного преобразования в двоичное? - PullRequest
0 голосов
/ 08 апреля 2020

Что я делаю :

У меня есть строка шестнадцатеричного значения strHexVal, которую я назначаю байтовому массиву hexBytes, используя DatatypeConverter.parseHexBinary(strHexVal)

Что я хочу

Массив байтов hexBytes всегда должен иметь размер 2, т. Е. Если после преобразования размер hexBytes равен 1, я хотел бы вставить массив с 0 и если размер после преобразования больше 2, выведите ошибку

Может кто-нибудь помочь мне с этим?

Код:

String strHexVal= "15";
byte[] hexBytes = DatatypeConverter.parseHexBinary(strHexVal);

**Need help with this part:**
if ( hexBytes length is 1) {
   hexBytes[1] = hexBytes[0]
   hexBytes[0] = 0x00; //will this work???
}
else if (hexBytes.length > 2) {
   throw error
}

1 Ответ

1 голос
/ 08 апреля 2020

Нет, вы не можете просто сделать hexBytes[0] = 0x00;, поскольку массивы Java имеют фиксированный размер после их создания.

Вам необходимо создать новый byte[]:

if ( hexBytes.length == 1) {
    hexBytes = new byte[] { 0, hexBytes[0] };
}

Убедитесь, что вы решили, что делать, если hexBytes.length также равно 0. Это будет иметь место, если входная строка пуста.

...