2014-09-13 304 views
1

我需要将字符串转换为二进制,然后将此二进制数转换为十进制。我正在做的是向用户询问一个单词,将每个字符转换为列表索引,然后将每个索引转换为二进制,将该二进制数字向后转换并转换为十进制数字。将字符串转换为二进制,并在Python中将二进制转换为十进制?

没有工作,我不知道为什么。它说一个字符串没有任何属性to_bytes(我不记得我在哪里看到这个语法,我正在寻找一种方法来转换为二进制,并撤消它,我认为这是在StackOverflow中)。有人能帮我吗?下面的代码:

import binascii  
senha = list(input("Digite uma frase: ")) 
senha2 = senha[::-1] 
for char in senha2: 
    char = bin(int.from_bytes(char.encode(), 'big')) 
    char = char[::-1] 
    char.to_bytes((char.bit_length() + 7) // 8, 'big').decode() 
+0

很好格式化的问题,但不要忘记添加标签。他们真的可以减少回答时间。 – 2014-09-13 11:24:59

+0

你想要做什么并不是很清楚。你能给出一个小例子字符串和你期望的输出吗?这是否做你想要的? 's ='一串'; print int(s.encode('hex'),16)' – 2014-09-13 13:24:12

回答

1

我不知道这是否是你想要什么,但这部作品在Python3:

In [79]: senha = 'this is my input' 
In [80]: senha_bytestring = bytes(senha, 'ascii') 
In [81]: senha_bitstring = '0b' + ''.join([bin(c)[2:] for c in senha_bytestring]) 
In [82]: print (senha_bitstring) 
0b1110100110100011010011110011100000110100111100111000001101101111100110000011010011101110111000011101011110100 
In [83]: senha_dec = int(senha_bitstring, 2) 
In [84]: print (senha_dec) 
592342518175792645920268465486580 

在Python2没有“字节”类型,但使用ord应该工作:

In [85]: senha = 'this is my input' 
In [86]: senha_bytestring = [ ord(c) for c in senha ] 
In [87]: senha_bitstring = '0b' + ''.join([bin(c)[2:] for c in senha_bytestring]) 
0b1110100110100011010011110011100000110100111100111000001101101111100110000011010011101110111000011101011110100 
In [88]: senha_dec = int(senha_bitstring, 2) 
In [89]: print (senha_dec) 
592342518175792645920268465486580 
相关问题