>>> float(-0b1110)
给我正确的输出:
-14.0
不幸的是,我正在使用二进制字符串,即我需要像float(‘ – 0b1110’)这样的东西.但是,这不行:
>>> float('-0b1110')Traceback (most recent call last): file "<stdin>",line 1,in <module>ValueError: invalID literal for float(): -0b1110
我尝试使用* binascii.a2b_qp(string [,header])*,它将一个引用的可打印数据块转换回二进制,并返回二进制数据.但是最终我得到了同样的错误:
>>> float(binascii.a2b_qp('-0b1110'))Traceback (most recent call last): file "<stdin>",in <module>ValueError: invalID literal for float(): -0b1110
我了解输出数是整数的情况,但是如果要获取数字12.546怎么办?那么二进制字符串的函数如何调用呢?
解决方法@H_301_21@float(int('-0b1110',0))
这对我行得通.
如果您有一个64位字符串表示浮点数而不是整数,则可以进行三步转换 – 第一步将字符串转换为整数,第二步将其转换为8字节字符串,第三个将这些位重新解释为浮点数.
>>> import struct>>> s = '0b0100000000101001000101111000110101001111110111110011101101100100'>>> q = int(s,0)>>> b8 = struct.pack('Q',q)>>> struct.unpack('d',b8)[0]12.546
当然,您可以将所有步骤组合成一行.
>>> s2 = '0b1100000000101100000000000000000000000000000000000000000000000000'>>> struct.unpack('d',struct.pack('Q',int(s2,0)))[0]-14.0总结
以上是内存溢出为你收集整理的python – 如何将二进制转换为浮点数全部内容,希望文章能够帮你解决python – 如何将二进制转换为浮点数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)