将ArrayList <String>转换为byte []

jbo*_*boy 13 java

我有一个ArrayList<String>我想通过UDP发送,但send方法需要byte[].

任何人都可以告诉我如何将我转换ArrayList<String>byte[]

谢谢!

Whi*_*g34 16

这实际上取决于您希望如何在另一端解码这些字节.一种合理的方法是对DataOutputStream列表中的每个字符串使用UTF-8编码.对于字符串,它为UTF-8编码的长度写入2个字节,后跟UTF-8字节.如果您不在另一端使用Java,这将是可移植的.以下是ArrayList<String>使用Java为这两方进行编码和解码的示例:

// example input list
List<String> list = new ArrayList<String>();
list.add("foo");
list.add("bar");
list.add("baz");

// write to byte array
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(baos);
for (String element : list) {
    out.writeUTF(element);
}
byte[] bytes = baos.toByteArray();

// read from byte array
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
DataInputStream in = new DataInputStream(bais);
while (in.available() > 0) {
    String element = in.readUTF();
    System.out.println(element);
}
Run Code Online (Sandbox Code Playgroud)


Boz*_*zho 10

如果对方也是java,你可以使用ObjectOutputStream.它将序列化对象(您可以使用a ByteArrayOutputStream来获取写入的字节)