1

我仍然不明白字节串是如何工作的

import qualified Data.ByteString.Lazy as BS
let x = BS.readFile "somefile.txt" --some large file
let z = ((reverse (BS.unpack x)) !! 2) --do stuff here

我知道字节串可用于读取大量数据,非常快速有效。但是拆开包装没有意义。

let z = readArray x 1 --can you read the bytestring like its a array?(something like this)

你不能不解包就读取字节串形式的数据吗?或者只是解压一部分数据?

你能解释一下它是如何工作的吗?(代码示例)

4

1 回答 1

8

但是打包拆包没有意义。

嗯,肯定是浪费。

你不能不解包就读取字节串形式的数据吗?

  • 您的意思是对数据进行操作而不将其转换为另一种形式?你当然可以。具体如何取决于你想做什么。我使用 FFI(以及后来的 Data.Vector.Storable)将 ByteString 作为一组Word32's 访问。Word8您可以自然地拉出任何个人。我确定您已经看过 ByteString 的 Haddock 文档,但知道其他包直接使用字节串(例如:用于将图像缓冲区与通过 FFI 调用的 C 代码进行通信)。

  • 您的意思是“在不使用[Word8]或的情况下对数据进行操作[Char]”?二进制、谷物和其他包可用于将字节串解析为任意类型。

或者只是解压一部分数据?

当然:

import Data.ByteString as B

getPortion n m = B.unpack . B.take n . B.drop m
于 2011-08-17T02:51:23.397 回答