提问者:小点点

获取Python中浮点的“位”?


我正在寻找Java的float.floattobits的Python等价物。

我找到了这个python:获取和操纵(作为整数)浮点的位模式,但是有没有人知道一种不那么复杂的方法呢?


共2个答案

匿名用户

Alex Martelli在这个问题中给出的答案非常简单--你可以把它简化为:

>>> import struct
>>> 
>>> 
>>> def floatToBits(f):
...     s = struct.pack('>f', f)
...     return struct.unpack('>l', s)[0]
...     
... 
>>> floatToBits(173.3125)
1127043072
>>> hex(_)
'0x432d5000'

一旦您将它作为一个整数,您就可以执行您需要的任何其他操作。

您可以将操作顺序颠倒为往返:

>>> def bitsToFloat(b):
...     s = struct.pack('>l', b)
...     return struct.unpack('>f', s)[0]

>>> bitsToFloat(0x432d5000)
173.3125

匿名用户

下面是python浮点1的64位小端表示,只是为了补充讨论内容:

>>> import struct
>>> import binascii
>>> print('0x' + binascii.hexlify(struct.pack('<d', 123.456789)))
0x0b0bee073cdd5e40

参考资料:

  • struct.pack字母顺序和字节大小格式说明符
  • binascii.hexlify

[1]例如,为了与intel上的.NET的位转换器(即小端点)实现互操作性,我特别需要这个