嗨,有我想要处理的浮点数据二进制文件(单精度 32 位 IEEE)。
我怎样才能最好地加载它以供进一步使用,理想情况下为 (IOArray Int Float)。

bytesToFloats :: ByteString -> [Float]
bytesToFloatArray :: ByteString -> IOArray Int Float

最佳答案

如果你有沼泽标准的单精度浮点数,而你只是想在 Haskell 中处理它们,你总是会对此感到沮丧和肮脏:

import Data.ByteString.Internal as BS
import qualified Data.Vector.Storable as V

bytesToFloats :: BS.ByteString -> V.Vector Float
bytesToFloats = V.unsafeCast . aux . BS.toForeignPtr
  where aux (fp,offset,len) = V.unsafeFromForeignPtr fp offset len

关于Haskell 字节串到浮点数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20912582/

10-13 08:18