gpt4 book ai didi

python - 将二进制字符串转换为 IEEE-754 单精度 - Python

转载 作者:行者123 更新时间:2023-11-28 21:53:32 31 4
gpt4 key购买 nike

我有一个由 NumPy 创建的二进制矩阵。该矩阵有 5 行和 32 列。

array([[1, 1, ..., 1, 1],
[0, 1, ..., 0, 1],
[1, 1, ..., 0, 1],
[0, 0, ..., 1, 0],
[1, 1, ..., 0, 1]])

我将一个矩阵行转换为一个字符串,然后是整数。

str = ''.join(map(str,array[0])).replace(' ','') 
int(str, base=2)

如何将字符串转换为 float (float32 - IEEE-754 single)?

最佳答案

使用 struct.pack , struct.unpack :

>>> a = [0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0,
... 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1]
>>> i = int(''.join(map(str, a)), 2)
>>> import struct
>>> struct.unpack('f', struct.pack('I', i))[0]
1.100000023841858

import struct

matrix = array(...)

st_i = struct.Struct('I')
st_f = struct.Struct('f')
float_values = [
st_f.unpack(st_i.pack(int(''.join(map(str, a)), 2)))
for a in matrix
]

注意:根据数组的字节顺序,需要在前面加上< , >在结构格式之前。

顺便说一句,覆盖str这不是一个好主意。您不能使用 str赋值后的函数/类型。

关于python - 将二进制字符串转换为 IEEE-754 单精度 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26018448/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com