Ptr Word8到[Word8]

时间:2017-01-07 21:26:29

标签: haskell bytestring

我正在使用库Network.Pcap,它具有函数toBS

toBS :: (PktHdr, Ptr Word8) -> IO (PktHdr, B.ByteString)
toBS (hdr, ptr) = do
    let len = hdrCaptureLength hdr
    s <- B.create (fromIntegral len) $ \p -> B.memcpy p ptr (fromIntegral len)
    return (hdr, s)

现在我正在解压缩ByteString,它给了我想要的[Word8]。一世' 我正在寻找一种方法来避免解包ByteString,并直接获得[Word8]

(1)这个功能存在吗? (2)如果没有,我可以就如何进行获得一些建议吗?

1 个答案:

答案 0 :(得分:2)

我不熟悉这些库,但你不能这样做吗?

import Foreign.Marshal.Array

toByteList :: PktHdr -> Ptr Word8 -> IO [Word8]
toByteList hdr ptr = peekArray (fromIntegral (hdrCaptureLength hdr)) ptr