获取Python中的漂浮的“位”?(Get the “bits” of a float in Pyt

2019-07-18 11:36发布

我找了Python相当于Java的的Float.floatToBits

我发现这个的Python:获得和处理(如整数)浮标位模式 ,但没有人知道的那么复杂呢?

Answer 1:

亚历克斯马尔泰利给出这个问题的答案是真的很简单 - 你可以将其降低到:

>>> 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


Answer 2:

这里是一个python浮子1刚要添加到讨论的64位,小端表示:

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

参考文献:

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

[1]例如,我需要这个专为与NET的互操作性BitConverter英特尔(即小端排序)



文章来源: Get the “bits” of a float in Python?