Ptr Word8 到 [Word8]

Ptr Word8 to [Word8]

我正在使用库 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) 如果没有,我能得到一些关于如何进行的建议吗?

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

import Foreign.Marshal.Array

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