我正在使用库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)如果没有,我可以就如何进行获得一些建议吗?
答案 0 :(得分:2)
我不熟悉这些库,但你不能这样做吗?
import Foreign.Marshal.Array
toByteList :: PktHdr -> Ptr Word8 -> IO [Word8]
toByteList hdr ptr = peekArray (fromIntegral (hdrCaptureLength hdr)) ptr