【问题标题】:How to convert 32-bit binary to float如何将 32 位二进制转换为浮点数
【发布时间】:2015-11-03 02:25:32
【问题描述】:

我想在 python 中执行 IEEE 754 从 32 位二进制到浮点数的转换。

我试过了

import struct

f = int('11000001101011000111101011100001', 2)
print struct.unpack('f', struct.pack('i', f))[0]

但这不适用于带有负号位的数字。

预期的输出应该是这样的:

bintofloat(11000001101011000111101011100001)
>>> -21.56

【问题讨论】:

标签: python binary floating-point ieee-754


【解决方案1】:

您可以按如下方式使用struct

import struct

f = int('01000001101011000111101011100001', 2)
print struct.unpack('f', struct.pack('I', f))[0]

f = int('11000001101011000111101011100001', 2)
print struct.unpack('f', struct.pack('I', f))[0]

给你一个输出:

21.5599994659
-21.5599994659

这完全取决于整数的表示方式。

【讨论】:

  • 很好.. 但如果符号位为负,那将不起作用。这意味着 if 不适用于负浮点数。
  • 如果您使用I 将整数打包为无符号,它将解决问题。我已经更新了答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 2011-03-05
  • 2017-03-29
  • 1970-01-01
  • 2017-02-23
相关资源
最近更新 更多