【问题标题】:Ptr Word8 to [Word8]Ptr Word8 到 [Word8]
【发布时间】:2023-04-10 14:13:02
【问题描述】:

我正在使用库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) 如果没有,我能否就如何进行?

【问题讨论】:

  • 最后,你想要一些功能g :: IO (PktHdr, B.ByteString) -&gt; IO (PktHdr, [Word8])吗?

标签: haskell bytestring


【解决方案1】:

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

import Foreign.Marshal.Array

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多