Storable.Vector Word8
とstrictの間で変換する最良の方法は何ByteString
ですか?
もちろん、非コピー (操作なし) の方法が最も高く評価されます。
そのためのライブラリ関数が必要ですunsafeCoerce
か、それともありますか(見つけられませんでした)?
また、アプローチは同じUnboxed.Vector Word8
ですか?
Storable.Vector Word8
とstrictの間で変換する最良の方法は何ByteString
ですか?
もちろん、非コピー (操作なし) の方法が最も高く評価されます。
そのためのライブラリ関数が必要ですunsafeCoerce
か、それともありますか(見つけられませんでした)?
また、アプローチは同じUnboxed.Vector Word8
ですか?
byteStringToVector :: (Storable a) => BS.ByteString -> V.Vector a
byteStringToVector bs = vec where
vec = V.unsafeFromForeignPtr (castForeignPtr fptr) (scale off) (scale len)
(fptr, off, len) = BS.toForeignPtr bs
scale = (`div` sizeOfElem vec)
sizeOfElem vec = sizeOf (undefined `asTypeOf` V.head vec)
http://hackage.haskell.org/packages/archive/spool/0.1/doc/html/Data-Vector-Storable-ByteString.html