过去我没有完成很多字节移位,所以我在这里有点亏。基本上我有大小为26的双数组,我应该用Java中的一个UDP数据包发送数组。我找到了一些如何将一个double转换为bytearray的例子,但我不确定如何将它应用于双列。
那应该怎么做呢?循环遍历double数组并转换每个double并以某种方式将它们连接到一个bytearray?
答案 0 :(得分:4)
那应该怎么做呢?循环遍历double数组并转换每个double并以某种方式将它们连接到一个bytearray?
完全。你也许可以使用DoubleBuffer。 (Marko在他的评论中将其联系起来)
Marko提到的实际上是一个ByteBuffer并且为它提取了一个“DoubleBuffer”-View。因此,您可以将put
双打放入DoubleBuffer视图,并从原始ByteBuffer中获取byte []。
答案 1 :(得分:3)
使用java.nio.ByteBuffer
将双打转换为字节数组ByteBuffer bb = ByteBuffer.allocate(doubles.length * 8);
for(double d : doubles) {
bb.putDouble(d);
}
获取字节数组
byte[] bytearray = bb.array();
通过网络发送,然后将其转换为接收方的双数组
ByteBuffer bb = ByteBuffer.wrap(bytearray);
double[] doubles = new double(bytearray.length / 8);
for(int i = 0; i < doubles.length; i++) {
doubles[i] = bb.getDouble();
}
答案 2 :(得分:1)
apache httpcore提供了一个 org.apache.http.util.ByteArrayBuffer 类,我很乐意
ByteArrayBuffer buffer = new ByteArrayBuffer(26);
buffer.append(...)