我有一个ByteString包含Floats 的表示.每个Float都由3个字节表示ByteString.
我需要做的一些处理Float的价值观,所以我想在一个执行该处理Vector的Float值.最好的方法是什么?
我有一个函数toFloat :: [Word8] -> Float将3个字节转换ByteString为Float.所以我在考虑迭代ByteString3个字节的步骤并将每个步骤转换Float为a vector.
我看过图书馆的功能,Vector但找不到任何适合这个目的的东西.Data.Vector.Storable.ByteString.byteStringToVector看起来很有前途,但它的每一个字节转换(而不是每3个字节),不给我过的如何转换任何控制ByteString到Float应该发生.
只需使用Data.Vector.generate:
V.generate (BS.length bs `div` 3) $ \i ->
myToFloat (bs BS.! 3*i) (bs BS.! 3*i+1) (bs BS.! 3*i+2)
Run Code Online (Sandbox Code Playgroud)
它将一次分配所有向量,并填充它。 Data.ByteString.!是 O(1),所以这是非常有效的。