拆分(格式化)二进制字符串为四

Splitting(Formatting) Binary String by Fours

假设我们有一个二进制字符串:bin = "11011"
我将如何按四分之一分割二进制字符串:1 1011

通常四分之一输出 1011 1 而不是:

for i in range(0, len(bin),4):
    print(bin[i:i+4], end=" ")

>> 1011 1

虽然我发现这样做有点混乱,但我想知道它们是否是解决问题的更优雅的方法:

mod = len(bin)%4
for s1 in range(mod, len(bin)+1,4):
    s0 = s1 - 4
    if s0 < 0:
        s0 = 0
    print(bin[s0:s1], end=" ")

>> 1 1011

bin = (4-len(bin)%4) * "0" + bin
for i in range(0, len(bin),4):
    print(bin[i:i+4], end=" ")

>> 0001 1011

你可以使用这个方法:

>>> s = "10011"
>>> " ".join([s[::-1][i:i+4] for i in range(0, len(s), 4)])[::-1]
'1 0011'

s[::-1 反转字符串(即它变为 11001)并且列表理解将其拆分为 4 位长度的块。

其余的只是使用 " ".join() 将列表转换回由空格分隔的字符串,然后再次反转字符串,以便数字按其原始顺序排列。

这很简单。 试试这个,

bin = "10011"
bin = bin[::-1]
ans = []
for i in range(0, len(bin), 4):
    ans.append(bin[i:i+4])
print(' '.join(ans)[::-1])

测试用例:

输入:10011

输出:1 0011

输入:111101010

输出:1 1110 1010