【发布时间】:2015-05-20 08:51:26
【问题描述】:
我有一个形式的字符串数组:
String[] s = {0x22, 0xD2, 0x01}
现在我必须将其转换为字节数组形式,例如:
byte[] bytes = {(byte)0x22, (byte)0xD2, (byte)0x01}
它可以在 c# 中单行完成,但如何在 Java 中完成,因为我必须将 bytes 数组附加到另一个相同类型和格式的数组中。
这里我已经包含了部分代码,因为我不能包含整个代码:
String sr = "22D201";
String[] s = {sr.substring(0, 2),sr.substring(2, 4),sr.substring(4)};
byte[] ret = new byte[]{(byte)0x2C, (byte)0x04, (byte)0x01, (byte)0x67, (byte)0x00, (byte)0x00, (byte)0x3D};
现在我必须将byte[] bytes 附加到byte[] ret,但我不能因为数组是String[] s 的字符串形式。那么如何隐藏String[] s,以便我可以将其添加到byte[] ret。
【问题讨论】:
-
此
String[] s = {0x22, 0xAC, 0xFF};无效Java:“不兼容的类型:int 无法转换为字符串”。另外,AC和FF对于一个字节来说太大了。 -
请edit您的问题并附上您的真实代码。
-
大家好,谢谢,我明白了。我使用了这种方法并且它正在工作。
public static byte[] hexStringToByteArray(String s) { int len = s.length(); byte[] data = new byte[len / 2]; for (int i = 0; i < len; i += 2) { data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)+Character.digit(s.charAt(i+1), 16)); } return data; }