Python中二进制的浮点表示(位不是十六进制)

时间:2017-03-22 15:41:14

标签: python binary floating-point

如何将字符串的32位浮点表示形式化为二进制IEEE 754?

实施例

' 00111111100000000000000000000000' - > 1.00

这个问题与此相反: Binary representation of float in Python (bits not hex) 我无法在其他地方找到答案。请注意,我对编码很陌生,所以请保持温和。

1 个答案:

答案 0 :(得分:3)

使用struct.packstruct.unpack

>>> import struct
>>> n = '00111111100000000000000000000000'
>>> struct.unpack('f', struct.pack('i', int(n, 2)))[0]
1.0
  • int(.., 2)将二进制表示转换为int(基数2)
  • struct.pack('i', ..)转换字节(i:32位int)
  • struct.unpack('f', ...)[0]将字节转换回float。

对于其他struct格式字符,请参阅Format charactes - struct module documentation