Skip to main content
 首页 » 编程设计

python之复制内部格式 float64 uint64

2024年08月27日28linjiqin

我正在使用 Numpy 和 Python。我需要复制数据,无需在 np.uint64 和 np.float64 之间进行数字转换,例如1.5 <-> 0x3ff8000000000000 .

我知道 float.hex,但输出格式与 uint64 相去甚远:

In [30]: a=1.5 
In [31]: float.hex(a) 
Out[31]: '0x1.8000000000000p+0' 

我也知道其他方式的各种字符串输入例程。

谁能推荐更直接的方法?毕竟,它只是简单的复制和类型更改,但 python/numpy 似乎非常严格地转换数据。

请您参考如下方法:

使用中间数组和 frombuffer 方法将一种数组类型“转换”为另一种:

>>> v = 1.5 
>>> fa = np.array([v], dtype='float64') 
>>> ua = np.frombuffer(fa, dtype='uint64') 
>>> ua[0] 
4609434218613702656      # 0x3ff8000000000000 

由于 frombuffer 创建了一个原始缓冲区的 View ,即使对于重新解释大型数组中的数据,这也是高效的。