преобразовать массив строк в массив байтов - PullRequest
5 голосов
/ 31 декабря 2011

У меня есть строковый массив, каждый элемент массива является hexString, состоящим из 2 символов.

Например, массив может быть:

String a = {"aa","ff","00",.....}

Как я могу преобразовать этот массив строкк массиву байтов в Java?

Ответы [ 4 ]

4 голосов
/ 31 декабря 2011

Если вы хотите проанализировать шестнадцатеричные строки без знака, используйте

byte[] b = new byte[a.length()];

for (int i=0; i<a.length(); i++) {
    b[i] = (byte) Short.parseShort(a[i], 16);
}

"ff" будет проанализирован в -1, как комплимент двух .

Если вы хотите, чтобы "ff" анализировал до 255 (больше, чем может удержать байт Java), вам нужно использовать шорты

short[] b = new short[a.length()];

for (int i=0; i<a.length(); i++) {
    b[i] = Short.parseShort(a[i], 16);
}
3 голосов
/ 31 декабря 2011

Перебрать массив и преобразовать каждую строку в байт, используя

byte b = (byte) (Integer.parseInt(theHexaString, 16)); 

Byte.parseByte() анализирует только подписанные байты и не рассматривает бит знака как бит знака.

0 голосов
/ 31 декабря 2011

Вы должны взглянуть на ByteArrayOutputStream .

Затем можно выполнить итерацию по каждой имеющейся строке и использовать метод Byte.parseByte () .Затем вы можете добавить его в ByteArrayOutputStream с помощью метода write .

Как только вы преобразуете все строки, вы можете использовать метод ByteArrayOutputStream toByteArray () .

0 голосов
/ 31 декабря 2011

Если я правильно понимаю, вам нужно представление байтов объединенных строк? Что-то вроде:

public byte[] getBytes(String[] array) {
    StringBuilder builder = new StringBuilder();
    for(String s: array) {
       builder.append(s);
    }
    return builder.toString().getBytes();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...