Преобразование байта [] в строку в Java - PullRequest
0 голосов
/ 06 октября 2018

Скажем, у нас есть массив byte[]:

byte[] data = {10,10,1,1,9,8}

, и я хочу преобразовать эти значения в шестнадцатеричную строку:

String arrayToHex = "AA1198"

Как я могу это сделать?Использование языка Java в IntelliJ.Имейте в виду, что это мой первый семестр кодирования, поэтому я уже чувствую себя потерянным.

Сначала я начну с этого метода:

public static String toHexString(byte[] data)

В проблеме, которую я пытаюсь решитьмы получаем строку из пользовательского ввода, которая затем преобразуется в массив byte [] и оттуда должна быть преобразована обратно в строку в шестнадцатеричном формате.Но для упрощения я просто пытаюсь ввести свой собственный массив.Итак, вот мой массив:

byte[] data = {10,10,1,1,9,8}

Я знаю, как просто напечатать массив байтов, просто сказав:

for (int i = 0; i < data.length; i++)
{
  System.out.print(data[i]);
}

, который будет иметь вывод:

10101198

но, очевидно, это не то, что я ищу, так как мне нужно преобразовать 10s в As, и мне нужен тип String, а не просто вывод.Извините, я такой расплывчатый, но я действительно потерян и готов сдаться!

1 Ответ

0 голосов
/ 06 октября 2018

Это не то, что вы обычно делаете, и будет работать только для байтовых значений от 0 до 15.

byte[] data = {10,10,1,1,9,8};
StringBuilder sb = new StringBuilder();
for (byte b : data)
    sb.append(Integer.toHexString(b));
String arrayAsHex = sb.toString();

Обычно вы ожидаете, что "0A0A01010908", так что любое значение байта возможно.

String arrayAsHex = DatatypeConverter.printHexBinary(data);
...