14

Storable.Vector Word8とstrictの間で変換する最良の方法は何ByteStringですか?

もちろん、非コピー (操作なし) の方法が最も高く評価されます。

そのためのライブラリ関数が必要ですunsafeCoerceか、それともありますか(見つけられませんでした)?

また、アプローチは同じUnboxed.Vector Word8ですか?

4

2 に答える 2

5
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

于 2013-09-19T07:46:00.467 に答える