在Haskell中将字节转换为Int64s / Floats / Doubles

我正在尝试在 Haskell中解析二进制文件格式(Apple的二进制属性列表格式),格式所要求的一件事就是将字节序列视为(a)无符号的1-,2-或4-字节整数; (b)签署8字节整数; (c)32位浮标; (d)64位双打.将字节序列转换为无符号整数很容易,甚至处理有符号整数也不会很糟糕.但是对于有符号整数,尤其是Floats和Doubles,我真的不想自己实现逻辑.我已经能够找到函数int2Float#:: Int# – > Float#和int2Double#:: Int# – >在 GHC.Prim中加倍#,但这些似乎并不理想(我不特别想要使用未装箱的类型).我希望有一些方法可以从[Word8]或Word32s / Word64s中进行投射.是否有Word32类型的任何功能 – > Float,Word64 – > Double,Word64 – > Int64还是类似的?
如果你不知道,fromIntegral完美地转换积分.此外, binary包和相关的 data-binary-ieee754包非常适用于您的问题.
相关文章
相关标签/搜索