Como converter uma string representando uma fração binária em um número em Python
Vamos supor que tenhamos uma string representando uma fração binária como:
".1"
Como um número decimal, isso é 0,5. Existe uma maneira padrão em Python para ir de tais seqüências de caracteres para um tipo de número (se é binário ou decimal não é estritamente importante).
Para um inteiro, a solução é direta:
int("101", 2)
>>>5
int () usa um segundo argumento opcional para fornecer a base, mas float () não.
Eu estou procurando algo funcionalmente equivalente (eu acho) para isso:
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 que faz o que eu quero, embora eu possa ter perdido alguns casos extremos.
Existe um método interno ou padrão de fazer isso em Python?