如何在Haskell中获取ByteString的第n个字节?
我试图为ByteStrings找到类似!!
的函数,但一无所获。
答案 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 个字节(可能产生一个空字节串),然后尝试从其余部分中拆分第一个字符,如果成功,则忽略其余的字符串。