首页 > 解决方案 > 从 numpy 获取 IEEE754 字节表示

问题描述

有没有办法使用 numpy 从浮点值运算中获取十六进制表示?如果可能的话,我想避免使用字符串。

例如:

1.1在单精度十六进制表示中是0x3F8CCCCD

1.1双精度十六进制表示是0x3FF199999999999A

理想情况下,我希望能够执行以下操作:

numpy.function(value)

返回

hex representation

有什么好方法可以做到这一点?

标签: pythonnumpyieee-754

解决方案


您可以使用viewnumpy 数组的方法来执行相当于 C 转换的操作。另一种方法是使用float.hex比原始帖子中显示的更人性化的十六进制表示。

示例程序:

import numpy as np
d = np.array(1.1)
i = d.view('int64')
print(f'double:      {d}')
print(f'cast to int: {i}')
print(f'hex:         0x{i.item():016x}')
print(f'floathex:    {float.hex(d.item())}')

输出:

double:      1.1
cast to int: 4607632778762754458
hex:         0x3ff199999999999a
floathex:    0x1.199999999999ap+0

推荐阅读