Python 将浮点值转换为其IEEE(32位)值

Python 将浮点值转换为其IEEE(32位)值,python,floating-point,ieee-754,Python,Floating Point,Ieee 754,我想用python编写一个脚本,以浮点值为例-37.32并输出其IEEE值(1100001000010010100011101110)。对于第一位,如果数字为负数,则为1,否则为0。对于指数来说,就是把数字除以2,如果我是正确的话,就得到余数。至于尾数,我不知道怎么计算。返回字符串将是最合理的方法,因为它更适合构造IEEE的每个元素 有人能帮我采取什么方法吗?或者展示一个解决这个问题的脚本并向我解释 可以使用struct模块将float转换为字节序列。然后,只需将每个字节转换为二进制字符串并将它

我想用python编写一个脚本,以浮点值为例-37.32并输出其IEEE值(1100001000010010100011101110)。对于第一位,如果数字为负数,则为1,否则为0。对于指数来说,就是把数字除以2,如果我是正确的话,就得到余数。至于尾数,我不知道怎么计算。返回字符串将是最合理的方法,因为它更适合构造IEEE的每个元素


有人能帮我采取什么方法吗?或者展示一个解决这个问题的脚本并向我解释

可以使用
struct
模块将
float
转换为字节序列。然后,只需将每个字节转换为二进制字符串并将它们连接在一起

>>> import struct
>>> ''.join('{:08b}'.format(b) for b in struct.pack('f', -37.32))
'10101110010001110001010111000010'

struct
模块可用于将
float
转换为字节序列。然后,只需将每个字节转换为二进制字符串并将它们连接在一起

>>> import struct
>>> ''.join('{:08b}'.format(b) for b in struct.pack('f', -37.32))
'10101110010001110001010111000010'

或者展示一个解决这个问题的脚本并向我解释?你自己试过什么吗?是的,我能让指数和符号起作用,但是对于尾数,我真的不知道如何得到它,或者展示一个解决这个问题并向我解释的脚本?你自己试过什么吗?是的,我能使指数和符号工作,但对于尾数,我真的不知道如何得到它。你可能想用
>f“
而不是
“f”
作为格式字符串,否则在一个小的endian机器上,位将以混合顺序显示(第7位…第0位…第15位…第8位…第31位…第24位)。这里你想要的输出大概是
1100001000101010100011110101110
@markdickinson我想了想,但我不知道OP是否知道或关心字节顺序,所以我只使用默认值。对,字节顺序在这里不是真的相关,但位顺序是:如果OP正在学习浮点的位表示,那么它们将我希望在字符串的开头看到符号位,而不是在中间的某个地方。这个解决方案也将指数字段分成两个部分。注意,如果你用“f”来填充,然后用“i”来解包(在这两种情况下都没有指定的字节)。,然后转换为二进制,您将在bigendian或littleendian机器上获得OP想要的结果。您可能希望对格式字符串使用
>f“
,而不是
“f”
,否则在小endian机器上,位将以混合顺序显示(位7…位0位15…位8…位31..位24)。这里你想要的输出大概是
1100001000101010100011110101110
@markdickinson我想了想,但我不知道OP是否知道或关心字节顺序,所以我只使用默认值。对,字节顺序在这里不是真的相关,但位顺序是:如果OP正在学习浮点的位表示,那么它们将我希望在字符串的开头看到符号位,而不是在中间的某个地方。这个解决方案也将指数字段分成两个部分。注意,如果你用“f”来填充,然后用“i”来解包(在这两种情况下都没有指定的字节)。,然后转换为二进制,您将在bigendian或littleendian机器上得到OP想要的结果。