gpt4 book ai didi

haskell - 如何将 ByteString 转换为 Int 并处理字节序?

转载 作者:行者123 更新时间:2023-12-04 16:26:15 26 4
gpt4 key购买 nike

我需要在 Haskell 中读取二进制格式。格式相当简单:四个八位字节表示数据的长度,然后是数据。四个八位字节表示网络字节顺序中的整数。

如何转换 ByteString四个字节到一个整数?我想要一个直接转换(在 C 中,这将是 *(int*)&data ),而不是字典转换。另外,我将如何处理字节顺序?序列化的整数按网络字节顺序排列,但机器可能使用不同的字节顺序。

我尝试了谷歌搜索,但只有关于字典转换的结果。

最佳答案

The binary package包含从 ByteStrings 获取各种大小和字节序的整数类型的工具。

λ> :set -XOverloadedStrings
λ> import qualified Data.Binary.Get as B
λ> B.runGet B.getWord32be "\STX\SOH\SOH\SOH"
33620225
λ> B.runGet B.getWord32be "\STX\SOH\SOH\SOHtrailing characters are ignored"
33620225
λ> B.runGet B.getWord32be "\STX\SOH\SOH" -- remember to use `catch`:
*** Exception: Data.Binary.Get.runGet at position 0: not enough bytes
CallStack (from HasCallStack):
error, called at libraries/binary/src/Data/Binary/Get.hs:351:5 in binary-0.8.5.1:Data.Binary.Get

关于haskell - 如何将 ByteString 转换为 Int 并处理字节序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14335725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com