拆分(格式化)二进制字符串为四
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
假设我们有一个二进制字符串: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