Python:需要帮助分割没有空格的二进制代码输入

3 投票
4 回答
5557 浏览
提问于 2025-04-17 12:59

我需要把每8个字符分开,这样就能变成一个列表,然后我可以把它们转换成ASCII码,再转换成英文。我现在不知道怎么把输入(一个很长的二进制数字字符串)分成可读的二进制数字,而不是只得到一个字符串。

比如,输入字符串"010000010100001001000011"可以分成八位组,变成这样:"01000001","01000010","01000011"。

我目前的进展是:

def main():
    import string

    #take user input of binary
    code = raw_input ('Please type in your binary code to be decoded: ')

    #split the code
    for word in code:
         print code[0::8] + ' '

    #replace the input with the variables
    ascii = ' '
    for word in code:
        ascii = ascii + int(word,2)

    english = ' '
    for word in acsii:
        english = english + chr(word)

    #print the variables to the user
    print english

#call Main
main()

4 个回答

2

我不太确定你是否想要这个,不过你可能觉得这样做值得:

>>> s = "010000010100001001000011"
>>> [int(s[i:i+8], 2) for i in xrange(0, len(s), 8)]
[65, 66, 67]

但是如果你只是想要'01'这种格式的话:

>>> s = "010000010100001001000011"
>>> [s[i:i+8] for i in xrange(0, len(s), 8)]
['01000001', '01000010', '01000011']

谢谢你,Ignacio,我得去睡觉了。

2

在编程中,有时候我们需要处理一些数据,比如从一个地方获取信息,然后把这些信息放到另一个地方。这个过程就像是在搬家,把东西从一个箱子搬到另一个箱子。

有些时候,我们需要确保在搬东西的时候,不会把东西弄丢或者搞混。为了做到这一点,我们可以使用一些工具或者方法来帮助我们更好地管理这些数据。

比如说,我们可以使用“数组”这种数据结构,它就像一个有很多格子的箱子,每个格子里可以放一个东西。这样我们就可以很方便地找到我们需要的东西。

另外,我们还可以使用“函数”,它就像一个小工具,可以帮助我们完成特定的任务。比如说,如果我们需要把一个数字加上另一个数字,我们可以写一个函数来专门做这个事情。这样,我们就不需要每次都手动去加了,省时省力。

总之,编程就像是在整理和搬运东西,我们需要用好工具和方法,才能让这个过程变得简单和高效。

>>> re.findall('[01]{8}', '010000010100001001000011')
['01000001', '01000010', '01000011']
>>> ''.join(chr(int(x, 2)) for x in re.findall('[01]{8}', '010000010100001001000011'))
'ABC'
5

这段话是说,下面的内容会对你有一些帮助,特别是关于列表推导式的部分:

>>> b = '010000010100001001000011'
>>> bin_chunks = [b[8*i:8*(i+1)] for i in xrange(len(b)//8)]
>>> print bin_chunks
['01000001', '01000010', '01000011']
>>> ints = [int(x, 2) for x in bin_chunks]
>>> print ints
[65, 66, 67]
>>> chars = [chr(x) for x in ints]
>>> print chars
['A', 'B', 'C']
>>> print ''.join(chars)
ABC

撰写回答