将2个int转换为32个float,适用于所有情况

时间:2013-10-21 15:19:18

标签: python floating-point int

查看问题Python: convert 2 ints to 32 float,显示两个intger可以转换为浮点数。给出的解决方案是:

from struct import pack, unpack
f = unpack('>f',pack('>HH',i1,i2))[0]

在评论中指出,这不适用于所有情况。我需要集成一种方法,将两个整数转换为生成代码的浮点数,因此必须考虑所有情况。有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

该答案的评论中的警告适用于反向操作。

对于所有无符号16位整数i1i2,打包到字节然后解压为float将无问题地工作。

如果您有时间,可以自行验证所有4294,000多种组合:

from struct import pack, unpack
for i1, i2 in product(xrange(2**16), repeat=2):
    try:
        f = unpack('>f', pack('>HH', i1, i2))
    except Exception:
        print 'Fails for {}, {}'.format(i1, i2)

或者,请接受我的话。