Шестнадцатеричный массив Java, преобразующий в целое число без предварительного преобразования в строку - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь преобразовать байтовый массив, который содержит шестнадцатеричные значения.

byte[] bytes = {48, 48, 48, 48, 48, 51, 51, 99}

, например: 48, 48, 48, 48, 48, 51, 51, 99 - 0000033c и преобразован в int -828. Единственный способ преобразовать это преобразовать его в String и затем проанализировать целое число из String.

 public static int ConvertValueFromBytes(byte[] bytes)
    {
        String b = new String(bytes);
        return Converter.ConvertHexToInt(b);
    }

Основная проблема здесь - это производительность, ее многократный вызов может вызвать проблемы с производительностью.При попытке разобрать значение int из байтового массива я получаю массивные числа, поэтому я анализирую из String, чтобы получить правильное значение.Есть ли лучший способ или решение для этого?

1 Ответ

0 голосов
/ 25 сентября 2018

Хотя очень непонятно, почему вы представляете данные таким образом, преобразование легко выполнить без использования строки:

int v = 0;
for (byte b : bytes) {
  v = 16 * v + Character.getNumericValue(b);
}

Ideone demo

...