在 Python 中浮动到二进制和二进制到浮动

0 floating-point binary python-3.x

谁能告诉我如何在python中将浮点数转换为32位二进制字符串以及从32位二进制字符串转换为浮点数?

python 中的“bin”函数仅适用于整数。

我需要一个单比特字符串作为内部表示。我不希望小数位前后的数字有单独的位串,小数位之间由小数位连接。

编辑:标记的问题没有解释如何将二进制字符串转换为浮回。

Eri*_*hil 5

复制自此答案并根据Mark Dickinson 的建议进行编辑:

import struct

def float_to_bin(num):
    return format(struct.unpack('!I', struct.pack('!f', num))[0], '032b')

def bin_to_float(binary):
    return struct.unpack('!f',struct.pack('!I', int(binary, 2)))[0]
Run Code Online (Sandbox Code Playgroud)

print float_to_bin(3.14) 产生“01000000010010001111010111000011”。

print bin_to_float("11000000001011010111000010100100") 产生“-2.71000003815”。