如何从ByteString获取第n个字节?

时间:2018-12-22 12:41:05

标签: haskell bytestring

如何在Haskell中获取ByteString的第n个字节?

我试图为ByteStrings找到类似!!的函数,但一无所获。

1 个答案:

答案 0 :(得分:6)

ByteString.index是您要寻找的功能。

大多数“容器”类型都模仿扩展列表界面;您还需要注意,因为如果您向程序提供的字符串太短,index函数将使程序崩溃(普通列表中的!!也是如此)。更好的实现可能是

import Data.ByteString as B
nthByte :: Int -> B.ByteString -> Maybe Word8
nthByte n bs = fst <$> B.uncons (B.drop n bs)

,它从内到外读取,丢弃前 n 个字节(可能产生一个空字节串),然后尝试从其余部分中拆分第一个字符,如果成功,则忽略其余的字符串。