我想把二进制数转换成浮点数.下面是一个可能性的例子:

>>> float(-0b1110)

给我正确的输出:

-14.0

Unfortunately, I am working with binary strings, i.e., I need something like float('-0b1110').
However, this doesn't work:

>>> float('-0b1110')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): -0b1110

我try 使用binascii.a2b_qp(string[, header]),它将引用的可打印数据块转换回二进制,并返回二进制数据.但最终,我还是犯了同样的错误:

>>> float(binascii.a2b_qp('-0b1110'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): -0b1110

我理解输出数字是整数的情况,但是如果我想得到数字12.546呢?那么二进制字符串的函数调用是什么样的呢?

推荐答案

另一个 Select 是这样做

from ast import literal_eval

float_str = "-0b101010101"
result = float(literal_eval(float_str))

与内置的"eval"不同,literal_eval即使在用户输入上也可以安全运行,因为它只能解析Python文本,不会执行表达式,这意味着它也不会调用函数.

Python-3.x相关问答推荐

使用魔方无法从图像中识别单个字符

Django 5.0.2和django_rest_framework

pandas查找另一列中是否存在ID

如何将值映射到具有上限和下限的新列

基于组/ID从原始数据框中创建两个子数据框

将自动文本转换为 DataFrame

python 分代垃圾收集:get_count 没有报告正确的对象创建数?

如何转置和 Pandas DataFrame 并命名新列?

如何在Pandas 中按条件计算分组?

正则表达式来识别用 Python 写成单词的数字?

是否可以将多个 if 转换为数组?

协议不支持地址系列在将 Scapy L3socket 与 WSL 一起使用时

如何将数据框中的每一行转换为具有属性的 node ?

为什么 f-strings 比 str() 更快地解析值?

ValueError:FixedLocator 位置的数量 (5),通常来自对 set_ticks 的调用,与刻度标签的数量 (12) 不匹配

sys.stdin.readline() 读取时没有提示,返回 'nothing in between'

python asyncio - 如何等待取消的屏蔽任务?

为什么 string.maketrans 在 Python 3.1 中不起作用?

哪个更有效:Python 文档字符串还是类型提示?

如何阻止散景在 Jupyter Notebook 中打开新标签?