【发布时间】:2017-06-08 10:34:10
【问题描述】:
我得到了一个通过 ajax 从 javascript 发送的字节数组,如下所示:
"89,50,4e,47,0d,0a,1a,0a,00,00,00,0d,49,48,44,52,00,00,01,98,00,00,00,e4,08,06,00 ..."
我想将此字符串转换为字节数组。 非常类似于这个问题,但使用 Java 代替:Convert String[] to byte[] array
编辑: 这似乎有效 - 但不确定我是否做得对
String[] byteData ="89,50,4e,47,0d,0a,1a,0a,00,00,00,0d,49,48,44,52,00,00,01,98,00,00,00,e4,08,06,00";
byte[] b = new byte[byteData.length];
for (int i = 0; i < byteData.length; i++) {
BigInteger bla = BigInteger.valueOf(Integer.parseInt(byteData[i].trim(), 16) - 128);
b[i] = bla.toByteArray()[0];
}
【问题讨论】:
-
您自己尝试过任何代码吗?
-
你有
String(byte[]),你只需要读取字符串,逐个解码字节来创建byte[],如果不能,请尝试返回。 -
一般流程是
String::split在逗号处,写一个转换hexToDec()函数,从结果中减去128,然后转换为byte。 Java 中没有uByte这样的东西,这就是为什么你需要从结果中减去 128