gpt4 book ai didi

haskell - 在 Haskell 中处理签名的二进制数据而不使用 unsafeCoerce

转载 作者:行者123 更新时间:2023-12-02 13:46:31 25 4
gpt4 key购买 nike

我正在使用 Data.Binary 中的 Get monad 从包含有符号 16 位整数的二进制文件中读取结构。我当前的代码如下所示:

data DetectorStats = DetectorStats Int16 Word8 Word8
Word8 Int16 Version Int16
deriving Show

getDetectorStats :: Get DetectorStats
getDetectorStats = do
productNumber <- getWord16be
bitPerCoordinate <- getWord8
energyCapability <- getWord8
timingCapability <- getWord8
clockFrequency <- getWord16be
serialNumber <- getWord16be
return (DetectorStats (unsafeCoerce productNumber )
bitPerCoordinate
energyCapability
timingCapability
(unsafeCoerce clockFrequency)
firmwareVersion
(unsafeCoerce serialNumber))

我对使用 unsafeCoerce 不满意,但似乎没有办法直接读取 Int16 ,也没有办法转换 < strong>Word16 转换为 Int16。有没有更好的方法来处理这个问题?

最佳答案

fromIntegral 会将 Word16 转换为 Int16。但是,您必须检查它是否获得了您预期的签名结果。

关于haskell - 在 Haskell 中处理签名的二进制数据而不使用 unsafeCoerce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5160644/

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