您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 如何将二进制转换为浮点数

5b51 2022/1/14 8:22:51 python 字数 2296 阅读 563 来源 www.jb51.cc/python

我想将一个二进制数转换成一个浮点数.这是一个可能性的例子: >>> float(-0b1110) 给我正确的输出: -14.0 不幸的是,我正在使用二进制字符串,即我需要像float(‘ – 0b1110’)这样的东西.但是,这不行: >>> float('-0b1110') Traceback (most recent call last): File "<stdin>", line 1,

概述

>>> 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怎么办?那么二进制字符串的函数如何调用呢?

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 – 如何将二进制转换为浮点数所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶