字符串数组到十六进制数组(Java)
我有一个字符串数组,它实际上由十六进制字符组成
假设内容为->
String array[] = {8C,D9,26,1D,69,B7,96,DB};
现在我想把它们解释为每个1字节的十六进制字符,而不是每个条目都是2字节的字符串
StringBuilder output = new StringBuilder();
for (int j = 0; j < array.length; j++) {
String temp = "\u00"+ array[j];
output.append(temp);
}
尝试过类似的方法,但不可能,因为它一直在抱怨“非法unicode越狱”。我尝试使用“\u00”(即u前面的两个反斜杠,但stackoverflow在那里只显示一个)来避免该错误,但随后我在数组中看不到真正的十六进制值,而是看到一组字符串,如->;“\U008C”、“\U00D9”等
我希望转换后的值为0x8C、0xD9、0x26
谢谢
编辑:我更新了这个问题,只是为了澄清数组本身没有逗号。最后,我需要将所有这些值放在一起,并将其用作HMAC键,它是一个十六进制字符串,而不是一个文本字符串
# 1 楼答案
让JDK为您完成工作:
基本上,你只需要循环中的一条线
如果你想让你的输入仅仅是一个大字符串(这似乎更方便),只需这样做:
编辑:
如果想要字节[]结果,请执行以下操作:
# 2 楼答案
您可以按如下方式拆分它:
为了加入它们,使用StringBuilder或StringBuffer并附加到它,而不是我的
System.out
语句# 3 楼答案
用绳子。split方法在
对于返回数组中的每个元素,go data[i]=“0x”+data[i]
对于数组中的每个元素str+=data[i]
埃兹