2017-01-07 3 views
0

に私は図書館Network.Pcapを使用していて、それが今、私は私がしたい[Word8]を与える延ByteStringを開梱しています機能toBSのPtr Word8 [Word8]

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]を直接取得する方法を模索しています。

(1)この機能はありますか? (2)そうでない場合は、進める方法についてアドバイスを受けることができますか?

+0

最終的に、いくつかの関数 'g :: IO(PktHdr、B.ByteString) - > IO(PktHdr、[Word8])'が必要ですか? – chepner

答えて

2

私はこれらのライブラリに精通していませんが、これを行うことはできませんか?

import Foreign.Marshal.Array 

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

はい、彼らはNetwork.Pcap.Baseで多くのことを言っています。 –

関連する問題