我有字符串数组,每个数组元素都是一个由2个字符组成的hexString。
例如,数组可以是:
String a = {"aa","ff","00",.....}
如何将这个字符串数组转换为Java中的字节数组?
答案 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()方法。