我正在寻找Java的float.floattobits
的Python等价物。
我找到了这个python:获取和操纵(作为整数)浮点的位模式,但是有没有人知道一种不那么复杂的方法呢?
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的位转换器
(即小端点)实现互操作性,我特别需要这个