将字符串数组元素转换为java中的字节数组

时间:2015-05-20 08:51:27

标签: java arrays

我有一个形式的字符串数组:

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

1 个答案:

答案 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();