【问题标题】:Convert string to binary, and binary to decimal in Python?在Python中将字符串转换为二进制,将二进制转换为十进制?
【发布时间】:2014-11-07 11:29:55
【问题描述】:

我需要把一个字符串转换成二进制,然后再把这个二进制数转换成十进制。我做的是向用户询问一个单词,将每个字符转换为列表索引,然后将每个索引转换为二进制,将二进制数反转,然后转换为十进制。

没有用,我不知道为什么。它说一个字符串没有属性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()

【问题讨论】:

  • 格式正确的问题,但不要忘记添加标签。他们真的可以减少回答时间。
  • 不太清楚你想做什么。你能给出一个小例子字符串和你期望的输出吗?这是做你想做的吗? s='A String'; print int(s.encode('hex'), 16)

标签: python string binary converter


【解决方案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 中没有 'bytes' 类型,但使用 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

【讨论】:

    猜你喜欢
    • 2017-05-26
    • 2012-10-05
    • 1970-01-01
    • 2016-08-13
    • 2020-08-06
    • 2021-02-24
    • 1970-01-01
    相关资源
    最近更新 更多