我有一个形式的字符串数组:
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
。
答案 0 :(得分:0)
您可以使用String.getBytes();
。
您还可以使用字节数组和指定的编码方案初始化String
:
String s = new String(new byte[]{ /* Bytes data. */}, "UTF-8");
对于Strings
的数组,因此可以按如下方式处理每个String的字节数组:
for(final String s : lStrings) {
byte[] lBytes = s.getBytes();
}
如果您想要创建这些类型的连续数组,可以使用ByteArrayOutputStream
。
ByteArrayOutputStream b = new ByteArrayOutputStream();
for(final String s : lStrings) {
b.write(s.getBytes());
}
final byte[] lTotalBytes = b.toByteArray();
/* Make sure all the bytes are written. */
b.flush();
/* Close the stream once we're finished. */
b.close();