将字符串数组转换为字节数组

时间:2011-12-31 15:39:46

标签: java string

我有字符串数组,每个数组元素都是一个由2个字符组成的hexString。

例如,数组可以是:

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

如何将这个字符串数组转换为Java中的字节数组?

4 个答案:

答案 0 :(得分:4)

如果要解析无符号字节十六进制字符串,请使用

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

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

“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);
}

答案 1 :(得分:3)

循环遍历数组,并使用

将每个String转换为一个字节
byte b = (byte) (Integer.parseInt(theHexaString, 16)); 

Byte.parseByte()仅解析带符号的字节,并不将符号位视为符号位。

答案 2 :(得分:0)

如果我理解正确,你需要连接字符串的字节表示吗?类似的东西:

public byte[] getBytes(String[] array) {
    StringBuilder builder = new StringBuilder();
    for(String s: array) {
       builder.append(s);
    }
    return builder.toString().getBytes();
}

答案 3 :(得分:0)

你应该看一下ByteArrayOutputStream

然后,您可以遍历每个字符串并使用Byte.parseByte()方法。您可以使用write方法将其添加到ByteArrayOutputStream。

一旦转换完所有字符串,就可以使用ByteArrayOutputStream的toByteArray()方法。