当前位置:  开发笔记 > 编程语言 > 正文

将字节数组转换为浮点数组

如何解决《将字节数组转换为浮点数组》经验,为你挑选了1个好方法。

我目前正在将用于随机二进制文件访问的Delphi方法转换为Java.Delphi程序使用:

TSingleArray  = Array[0..MAXSIZE] of Single
...
procedure GetLinkValues(const LinkVar: Integer;  const TimePeriod: Integer; var Value: PSingleArray);
...
BlockRead(Fout, Value^, Nlinks*SizeOf(Single));

将字节数组读入Single数组.有没有一种相同的方法在Java中执行此操作而不迭代数组?

我正在使用

List l = new ArrayList();
…
for (int i = 0 ; i < nLinks ; i++ )
l.add( resultsFile.readFloat());

但我很关心速度.字节序不是问题.



1> Jon Skeet..:

您是否对代码进行了分析并确实发现它是一个问题?有些东西必须循环......你真的确定这是你代码中的瓶颈吗?

说了这么多,你应该能够使用FloatBuffer,我怀疑它可以做你想要的.不幸的是,Sun的JavaDoc已关闭,因此我无法轻易链接或查看文档.

要使用FloatBuffer,您可能希望:

创建与文件关联的FileChannel(例如,使用FileInputStream.getChannel)

创建一个ByteBuffer

使用ByteBuffer.asFloatBuffer创建一个包装ByteBuffer的FloatBuffer

使用FileChannel.read(byteBuffer)读入ByteBuffer

从FloatBuffer中读取

我对java.nio并不是特别熟悉/熟悉,所以我希望这一切都是正确的 - 但它可能非常繁琐.你当前的循环几乎肯定更简单,所以我强烈建议你先检查一下它的性能!您可能希望将当前的FileInputStream包装在BufferedInputStream中,顺便说一句.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有