0

过去我没有做太多的字节移位,所以我在这里有点茫然。基本上我有大小为 26 的双数组,我应该在 Java 的一个 UDP 数据包中发送数组。我找到了一些如何将一个双精度转换为字节数组的示例,但我不确定如何将它应用于双精度数组。

那么这应该怎么做呢?循环遍历双精度数组并转换每个双精度并以某种方式将它们连接到一个字节数组?

4

3 回答 3

5

使用 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();
}
于 2013-06-03T09:15:34.070 回答
4

那么这应该怎么做呢?循环遍历双精度数组并转换每个双精度并以某种方式将它们连接到一个字节数组?

确切地。也许您可以使用 DoubleBuffer。(Marko 在他的评论中链接了它)

Marko 所指的是实际上有一个 ByteBuffer 并获取一个“DoubleBuffer”-View 给它。因此,您可以put将 Doubles 放入 DoubleBuffer 视图并从原始 ByteBuffer 中获取 byte[]。

于 2013-06-03T08:24:16.643 回答
1

apache httpcore 提供了一个org.apache.http.util.ByteArrayBuffer类,我很有帮助

ByteArrayBuffer buffer = new ByteArrayBuffer(26);
buffer.append(...)
于 2013-06-03T08:28:39.160 回答