簡體   English   中英

在Python中將字符串轉換為二進制,然后將二進制轉換為十進制?

[英]Convert string to binary, and binary to decimal in 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()

我不確定這是否正是您想要的,但這在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM