5 haskell endianness bytestring
我需要在Haskell中读取二进制格式.格式非常简单:四个八位字节表示数据的长度,后跟数据.四个八位字节表示网络字节顺序中的整数.
如何将ByteString四个字节转换为整数?我想要一个直接演员(在C中,那将是*(int*)&data),而不是字典转换.另外,我将如何处理字节序?序列化整数是网络字节顺序,但机器可能使用不同的字节顺序.
我试过谷歌搜索,但只有yold结果有关词典转换.
我假设您可以使用折叠,然后使用foldl或foldr来确定您想要哪个字节序(我忘记了哪个是哪个)。
foldl :: (a -> Word8 -> a) -> a -> ByteString -> a
Run Code Online (Sandbox Code Playgroud)
我认为这适用于二元运算符:
foo :: Int -> Word8 -> Int
foo prev v = (prev * 256) + v
Run Code Online (Sandbox Code Playgroud)