【问题标题】:How to convert hex to IEEE floating point python如何将十六进制转换为 IEEE 浮点 python
【发布时间】:2017-05-18 16:07:28
【问题描述】:

我想将此十六进制字符串 '8436d4ccd436d3333' 转换为 IEEE 浮点数。我尝试使用struct.unpack 来执行此操作,但它需要一个长度为 4 的字符串参数。

struct.unpack('>f', binascii.unhexlify('8436d999a436e0000'))

我正在使用这个网站来验证我的转换尝试是否正确:https://gregstoll.dyndns.org/~gregstoll/floattohex/ 但我找不到这样做的方法。

感谢您的帮助

【问题讨论】:

    标签: python struct floating-point hex data-conversion


    【解决方案1】:

    猜测,每个十六进制字符串包含 两个 单精度浮点值,而不是一个,并且初始 8 是正在使用的任何消息协议的一部分,而不是这些花车的一部分。有了这个猜测,我得到了一些看似合理的数字:

    >>> struct.unpack('>ff', binascii.unhexlify('436d4ccd436d3333'))
    (237.3000030517578, 237.1999969482422)
    >>> struct.unpack('>ff', binascii.unhexlify('436d999a436e0000'))
    (237.60000610351562, 238.0)
    

    为了加强合理性,以下是我通过编码相应的 1-digit-past-the-decimal-point 值得到的结果:

    >>> binascii.hexlify(struct.pack('>ff', 237.3, 237.2))
    b'436d4ccd436d3333'
    >>> binascii.hexlify(struct.pack('>ff', 237.6, 238.0))
    b'436d999a436e0000'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      • 2011-02-25
      • 1970-01-01
      相关资源
      最近更新 更多