查看问题Python: convert 2 ints to 32 float,显示两个intger可以转换为浮点数。给出的解决方案是:
from struct import pack, unpack
f = unpack('>f',pack('>HH',i1,i2))[0]
在评论中指出,这不适用于所有情况。我需要集成一种方法,将两个整数转换为生成代码的浮点数,因此必须考虑所有情况。有没有更好的方法来实现这一目标?
答案 0 :(得分:1)
该答案的评论中的警告仅适用于反向操作。
对于所有无符号16位整数i1
和i2
,打包到字节然后解压为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)
或者,请接受我的话。