Haskell Bytestring打包/解压缩

Arc*_*ler 1 haskell bytestring

我仍然不知道字节串是如何工作的

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
Run Code Online (Sandbox Code Playgroud)

我知道bytestrings可以用来非常快速有效地读取大量数据.但打开包装没有意义.

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

你不能只是在没有解压缩的情况下以字节串形式读取数据吗?或者只是解压缩一段数据?

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

Tho*_*son 8

但打包拆包并没有意义.

嗯,这肯定是浪费.

你不能只是在没有解压缩的情况下以字节串形式读取数据吗?

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

  • 你的意思是"不使用[Word8][Char]" 操作数据?二进制,谷物和其他包可用于将字节串解析为任意类型.

或者只是解压缩一段数据?

当然:

import Data.ByteString as B

getPortion n m = B.unpack . B.take n . B.drop m
Run Code Online (Sandbox Code Playgroud)