如何将字符串的32位浮点表示形式化为二进制IEEE 754?
实施例
' 00111111100000000000000000000000' - > 1.00
这个问题与此相反: Binary representation of float in Python (bits not hex) 我无法在其他地方找到答案。请注意,我对编码很陌生,所以请保持温和。
答案 0 :(得分:3)
使用struct.pack
和struct.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。