我是一名有用的助手,可以为您进行文本翻译。以下是您需要翻译的内容:
如何在Java中将这个由字符串组成的数组转换为字节数组?
我有一个字符串数组,每个数组元素都是由两个字符组成的十六进制字符串。
例如,该数组可能如下所示:
String a = {"aa","ff","00",.....}
如何在Java中将这个由字符串组成的数组转换为字节数组?
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类型。
"short[] b = new short[a.length()];
for (int i=0; i<a.length(); i++) {
b[i] = Short.parseShort(a[i], 16);
}
& 0xff
部分,因为强制转换应该会去除高位。 - Hovercraft Full Of Eelsbyte b = (byte) (Integer.parseInt(theHexaString, 16));
Byte.parseByte()
仅解析有符号字节,并且不将符号位视为符号位。
你应该查看一下ByteArrayOutputStream。
然后,你可以遍历每个字符串,并使用Byte.parseByte()方法。接着,你可以通过使用write方法将其添加到ByteArrayOutputStream中。
一旦你已经转换了所有的字符串,就可以使用ByteArrayOutputStream的toByteArray()方法。
public byte[] getBytes(String[] array) {
StringBuilder builder = new StringBuilder();
for(String s: array) {
builder.append(s);
}
return builder.toString().getBytes();
}
getBytes()
不会将单个字符串解析为它们的字节表示,而是使用每个字符的默认字符集编码 - 这是两件完全不同的事情。您应该删除这个答案。 - Hovercraft Full Of Eels
myBytes[i] = Byte.parseByte(myStrings[i], 16)
将每个字符串项解析为字节(编辑:糟糕,忘记了基数!)。 - Hovercraft Full Of Eels