나는 UDP를 통해 보내려는 ArrayList<String>
이지만 전송 방법은 byte[]
이 필요합니다.ArrayList <String>을 byte []로 변환하십시오.
누구나 ArrayList<String>
을 byte[]
으로 변환하는 방법을 알려 줄 수 있습니까?
감사합니다.
나는 UDP를 통해 보내려는 ArrayList<String>
이지만 전송 방법은 byte[]
이 필요합니다.ArrayList <String>을 byte []로 변환하십시오.
누구나 ArrayList<String>
을 byte[]
으로 변환하는 방법을 알려 줄 수 있습니까?
감사합니다.
반대쪽이 java 인 경우 ObjectOutputStream
을 사용할 수 있습니다. 그것은 개체를 serialize합니다 (쓸 수있는 바이트를 얻으려면 ByteArrayOutputStream
사용할 수 있습니다)
정말 어떻게 다른 쪽 끝에서 이러한 바이트를 디코딩 할 기대하는 따라 달라집니다. 하나의 합리적인 방법은 DataOutputStream
과 같은 UTF-8 인코딩을 사용하여 목록의 각 문자열에 적용하는 것입니다. 문자열의 경우 UTF-8 인코딩의 길이에 이어 2 바이트를 쓰고 UTF-8 바이트를 씁니다. 다른 쪽에서 Java를 사용하지 않는다면 이식성이 있습니다. 다음은 인코딩의 예와의 양쪽 자바를 사용하여이 방법에 ArrayList<String>
을 디코딩 :
// 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);
}
available()가 일반적으로 사용하기에 좋은 방법은 아니므로 길이를 먼저 보냅니다. –
for 루프 뒤에'out.flush();를 추가 할 수 있습니다. 그러면 모든 데이터가 스트림으로 전송됩니다. – cobarzan
당신이하는 것 같아서 http://www.java2s.com/Code/JavaAPI/java.util/ArrayListtoArrayTa.htm –