2014-08-31 64 views
4

用於產生二進制數字的位數n數字
我這樣做是爲了得到多達16個二進制數字。N位數字的二進制數字

n = 6      # for 6 digits 
for i in xrange(16): 
    b = bin(i)[2:] 
    l = len(b) 
    b = str(0) * (n - l) + b 
    print b 

它會導致這樣的

000000 
000001 
000010 
000011 
000100 
000101 
000110 
000111 
001000 
001001 
001010 
001011 
001100 
001101 
001110 
001111 

,但我想要的是獲取這些值沒有前綴添加一系列的0s
任何人都可以幫助我。
謝謝

回答

6

刪除墊子0 s的線路。

n = 6 
for i in xrange(16): 
    b = bin(i)[2:] 
    l = len(b) 
    #b = str(0) * (n - l) + b # <-------- 
    print b 

如果你的意思是填補數不串oeprator,使用str.formatb type format

n = 6 
for i in xrange(16): 
    print '{:0{}b}'.format(i, n) 
    # OR print '{:06b}'.format(i) 

    # OR print '{:b}'.format(i) if you want no leading 0s. 
+2

我覺得意思格式化用前導零的字符串,不concating串 – 2014-08-31 07:17:04

+0

@kroolik用戶,非常感謝您指出這一點。我相應地更新了答案。 – falsetru 2014-08-31 07:21:46

5

如果你問一個不同的方法:

n = 6 
for i in xrange(16): 
    b = bin(i)[2:].zfill(n) 
    print b 

str.zfill(n)墊左邊帶零的字符串,至少長度爲n


如果你只是不想前導零:

for i in xrange(16): 
    b = bin(i)[2:] 
    print b