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
我正在使用库 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