在Java中将双精度数组转换为bytearray

时间:2013-06-03 08:21:48

标签: java udp double bytearray

过去我没有完成很多字节移位,所以我在这里有点亏。基本上我有大小为26的双数组,我应该用Java中的一个UDP数据包发送数组。我找到了一些如何将一个double转换为bytearray的例子,但我不确定如何将它应用于双列。

那应该怎么做呢?循环遍历double数组并转换每个double并以某种方式将它们连接到一个bytearray?

3 个答案:

答案 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(...)