Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsing 从bytestring读取字128_Parsing_Haskell_Binary Data - Fatal编程技术网

Parsing 从bytestring读取字128

Parsing 从bytestring读取字128,parsing,haskell,binary-data,Parsing,Haskell,Binary Data,作为一名haskell新手,我遇到了一个问题:我在bytestring中有一个二进制数据,我想将它转换为Word128的列表(假设二进制数据是16字节对齐的)。 实际上,我甚至很难将16字节的bytestring转换成128字 有人能帮忙吗? 谢谢 通常,您将为所选的二进制解析库编写一个实例。例如,你可以写下这样的内容: -- | Read a Word64 in big endian format getWord64be :: Get Word64 getWord64be = do s

作为一名haskell新手,我遇到了一个问题:我在bytestring中有一个二进制数据,我想将它转换为Word128的列表(假设二进制数据是16字节对齐的)。 实际上,我甚至很难将16字节的bytestring转换成128字

有人能帮忙吗?
谢谢

通常,您将为所选的二进制解析库编写一个实例。例如,你可以写下这样的内容:

-- | Read a Word64 in big endian format
getWord64be :: Get Word64
getWord64be = do
    s <- readN 8 id
    return $! (fromIntegral (s `B.index` 0) `shiftl_w64` 56) .|.
              (fromIntegral (s `B.index` 1) `shiftl_w64` 48) .|.
              (fromIntegral (s `B.index` 2) `shiftl_w64` 40) .|.
              (fromIntegral (s `B.index` 3) `shiftl_w64` 32) .|.
              (fromIntegral (s `B.index` 4) `shiftl_w64` 24) .|.
              (fromIntegral (s `B.index` 5) `shiftl_w64` 16) .|.
              (fromIntegral (s `B.index` 6) `shiftl_w64`  8) .|.
              (fromIntegral (s `B.index` 7) )
{- INLINE getWord64be -}
——|阅读大端格式的单词64
getWord64be::GetWord64
getWord64be=do

s我们在哪里为一个
unsafeGetbe::(积分a,位a)=>Int->a
提交一个功能请求,这将把它变成
getWord64be=unsafeGetbe 8
?=)展开的字节级循环对我来说似乎很好。你想用TH生成它吗?我想更像是一个
foldr(\byte val->shiftl val 8.|.from integral byte)
或类似的东西。@Don在Data.Binary.Get之外公开了吗?或者你真的建议他修改Data.Binary.Get的src吗?@Jonke,@Don:二进制(Data.Binary.Get)和谷物(Data.Serialize.Get)包的src应该是
getBytes