我尝试加密十六进制的消息,并要求将其存储到byteArray中。当我对字节数组进行硬编码时,我得到了它的工作,但是当作为字符串传递时我无法使它工作。 硬编码的byteArray看起来像
byte secretKeyBytes[] = new byte[] {(byte) 0x80, (byte)0x00, (byte)0x00,(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01};
所以我希望用户传递一个字符串,如" 0x80 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01"
我想知道如何将此字符串保存为如上所述的byte []数组。 我曾尝试使用.getBytes方法,但这对字符串不起作用 它可以解析一下吗?
我尝试使用Convert a string representation of a hex dump to a byte array using Java?上发布的方法 由@pfranza
public static byte[] fromHexString(String s) {
String v[] = s.split(" ");
System.out.println(v.length);
byte arr [] = new byte[v.length];
int i = 0;
for(String val: v) {
arr[i++] = Integer.decode("0x" + val).byteValue();
}
return arr;
我添加了一个print语句来查看数组的大小,并打印出16这是正确的。但我认为它不是在字节数组中正确存储值。 当我输入0x80 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01
我得到java.lang.NumberFormatException:对于输入字符串:" 0x80"