繁体   English   中英

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

[英]Convert array of doubles to bytearray in Java

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

那么应该怎么做呢? 遍历double型数组并转换每个double型,然后以某种方式将它们串联为一个字节数组?

那么应该怎么做呢? 遍历double型数组并转换每个double型,然后以某种方式将它们串联为一个字节数组?

究竟。 也许可以使用DoubleBuffer。 (Marko在他的评论中链接了它)

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

使用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();
}

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

ByteArrayBuffer buffer = new ByteArrayBuffer(26);
buffer.append(...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM