说我有一个字符串:Hello!
我必须做所有这些:
这是我的代码......
//Sender
String send = "Hello!";
byte[] data = send.getBytes();
DatagramPacket packetOut = new DatagramPacket(data, data.length); //send blah blah
//Receiver
//blah blah receive it
String receive = new String(packetIn.getData()); //convert it back
对于一组整数,这是一种快速而优雅的方法吗?
答案 0 :(得分:3)
对于int [],您可以使用ObjectOutputStream进行序列化,但更快的方法可能是使用ByteBuffer。
public static byte[] intsToBytes(int[] ints) {
ByteBuffer bb = ByteBuffer.allocate(ints.length * 4);
IntBuffer ib = bb.asIntBuffer();
for (int i : ints) ib.put(i);
return bb.array();
}
public static int[] bytesToInts(byte[] bytes) {
int[] ints = new int[bytes.length / 4];
ByteBuffer.wrap(bytes).asIntBuffer().get(ints);
return ints;
}
答案 1 :(得分:1)
我不知道这种方式如何优雅,但会很快。使用GSON库将Integers数组转换为String,并将String转换为Integer数组。
import java.lang.reflect.Type;
import com.google.gson.Gson;
...
Gson gson = new Gson();
List<Integer> list = Arrays.asList(1,2,3);
//Sender
String send = gson.toJson(list);
byte[] data = send.getBytes();
DatagramPacket packetOut = new DatagramPacket(data, data.length); //send blah blah
//Receiver
//blah blah receive it
String receive = new String(packetIn.getData()); //convert it back
Type listType = new TypeToken<List<Integer>(){}.getType();
List<Integer> list = gson.fromJson(receive, listType);
Gson的性能很低,但它可以快速使用。如果你使用的不是java.util.List
之类的复杂对象 - 会很好。
你可以从那里得到GSON jar:link: gson 1.7
顺便使用GSON,您可以将任何类型的Object转换为String,反之亦然。