所以我已经阅读了一些文章,但主要是因为我想要一个快速的I / O,我想写一个双数组到一个文件。为此,我需要将其转换为字节数组。不幸的是,这会复制数据。
所以我想知道suing java不安全是否可以创建一个指向double []数组地址的byte []变量,只是将数据解释为字节而不是双精度数? 到目前为止我没有找到任何地方这样的例子,只有再次如何使用复制内存才能做到这一点。任何建议都表示赞赏!
答案 0 :(得分:4)
如果你从ByteBuffer开始,你可以保留它的参考,并可以互换使用它们。
ByteBuffer bb = ByteBuffer.allocateDirect(8 * n_doubles);
DoubleBuffer db = bb.asDoubleBuffer();
由于使用了相同的内存,因此无法读取/写入byte
或double
。
如果要避免向文件添加其他副本,可以使用内存映射区域。
顺便说一句:ByteBuffer使用不安全,但以某种方式保护你。