1 回答

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
我們可以為此使用列表理解:
def bin_divby(dec, leng):
bn = bin(dec)[:1:-1]
return [bn[i:i+leng][::-1] for i in range(0, len(bn), leng)][::-1]
我們可以通過(guò)反轉(zhuǎn)range(..)對(duì)象來(lái)稍微提高效率:
def bin_divby(dec, leng):
bn = bin(dec)[:1:-1]
n = len(bn) - 1
return [bn[i:i+leng][::-1] for i in range(n - n%leng, -leng, -leng)]
所以這里我們首先反向獲取二進(jìn)制字符串,然后我們迭代該字符串,并且每次對(duì)字符串進(jìn)行切片。最終的結(jié)果是相反的。
這產(chǎn)生了預(yù)期的:
>>> bin_divby(0b1001011000, 1)
['1', '0', '0', '1', '0', '1', '1', '0', '0', '0']
>>> bin_divby(0b1001011000, 2)
['10', '01', '01', '10', '00']
>>> bin_divby(0b1001011000, 3)
['1', '001', '011', '000']
>>> bin_divby(0b1001011000, 4)
['10', '0101', '1000']
>>> bin_divby(0b1001011000, 5)
['10010', '11000']
>>> bin_divby(0b1001011000, 6)
['1001', '011000']
>>> bin_divby(0b1001011000, 7)
['100', '1011000']
添加回答
舉報(bào)