java - 将 ArrayList<String> 转换为字节 []

标签 java

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

谁能告诉我如何转换我的 ArrayList<String>byte[]

谢谢!

最佳答案

这实际上取决于您期望如何在另一端解码这些字节。一种合理的方法是使用像 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);
}

关于java - 将 ArrayList<String> 转换为字节 [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5618978/

相关文章:

java - 无法读取 try catch 中的变量

Java:将大量数据序列化到单个文件

java - 如何使用 ASM 添加自定义注释

java - 对 onCreate 方法期间引用布局感到困惑

java - 离开 android 中的 Activity 后如何保留 ListView ?

java - AWS Lambda (Java API) 是否支持 JSR-250 注释?

java - 如何从互联网将文件写入SD卡?

java - Androidplot - 在绘图区域内定位范围标签

java - Android-使用 putExtra(String name, String value) 方法时出错

java - 无法使用 jackson @JsonTypeInfo 注释将对象反序列化为其原始类型