2013-01-14 85 views
0

我想將一些文件的二進制輸出轉換爲不同的類型,並且我一直看到奇怪的東西。Python二進制轉換

舉例來說,我有:

value = '\x11' 

如果你

bin(ord(value)) 

你得到的輸出

'0b10001' 

,而我希望能得到

'0b00010001' 

我基本上試圖讀取一個32字節的標題,把它變成1和0,所以我可以抓住不同含義的不同位。

回答

2

爲什麼不只是使用按位運算符?

def is_bit_set(i, x): 
    """Check if the i-th bit in x is set""" 
    return x & (1 << i) > 0 
2

爲了得到需要的結果,請嘗試:

"0b{:08b}".format(ord(value)) 

如果效率是您的關心,建議使用本機二進制表示的,而不是文字(字符串)二進制表示,對於位運算得多緊湊和高效。

0

format(ord('\x11'), '08b')會讓你00010001,它應該足夠接近你想要的。