Преобразование шестнадцатеричной строки в беззнаковый байтовый массив в Java - PullRequest
3 голосов
/ 08 декабря 2011

Я получаю шестнадцатеричные строки размером 14 байт, например a55a0b05000000000022366420ec. Я использую javax.xml.bind.DatatypeConverter.parseHexBinary(String s), чтобы получить массив из 14 байтов. К сожалению, это байты unigend, как, например, последний 0xEC = 236.

Но я бы хотел сравнить их с байтами: if(byteArray[13] == 0xec) Так как 235 больше, чем подписанный байт, это если оператор потерпит неудачу. Любая идея, как решить эту проблему в Java? Thx!

Ответы [ 3 ]

9 голосов
/ 08 декабря 2011

Попробуйте if(byteArray[13] == (byte)0xec)

3 голосов
/ 08 декабря 2011

Вы можете преобразовать байт в целое число:

if((byteArray[13] & 0xff) == 0xec)
0 голосов
/ 08 декабря 2011

, поскольку java не поддерживает (по крайней мере, с примитивами) любые типы данных без знака, вы должны использовать int в качестве типа данных для анализа строки.

        String str = "a55a0b05000000000022366420ec";
        int[] arrayOfValues = new int[str.length() / 2];
        int counter = 0;
        for (int i = 0; i < str.length(); i += 2) {
            String s = str.substring(i, i + 2);
            arrayOfValues[counter] = Integer.parseInt(s, 16);
            counter++;
        }

работа с arrayOfValues...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...