"Peeking",将指针ptr
读取到新的ByteString
,非常简单:
BS.packCStringLen (ptr, size)
但是poke
操作(将ByteString
写入给定的内存位置)并不是那么明显。我们有
useAsCStringLen :: ByteString -> (CStringLen -> IO a) -> IO a
所以我们可以做(在copyBytes
的帮助下。
BS.useAsCStringLen bs $ \(src, len) -> copyBytes ptr src len
或提高效果unsafeUseAsCStringLen
。
是否有一个现成的功能可以完成上述工作?