Cómo convertir una cadena que representa una fracción binaria en un número en Python
Supongamos que tenemos una cadena que representa una fracción binaria como:
".1"
Como número decimal esto es 0.5. ¿Existe una forma estándar en Python para pasar de tales cadenas a un tipo de número (ya sea binario o decimal no es estrictamente importante).
Para un entero, la solución es sencilla:
int("101", 2)
>>>5
int () toma un segundo argumento opcional para proporcionar la base, pero float () no lo hace.
Estoy buscando algo funcionalmente equivalente (creo) a esto:
def frac_bin_str_to_float(num):
"""Assuming num to be a string representing
the fractional part of a binary number with
no integer part, return num as a float."""
result = 0
ex = 2.0
for c in num:
if c == '1':
result += 1/ex
ex *= 2
return result
I pensar eso hace lo que quiero, aunque es posible que haya perdido algunos casos de vanguardia.
¿Existe un método incorporado o estándar para hacer esto en Python?