我想將一些文件的二進制輸出轉換爲不同的類型,並且我一直看到奇怪的東西。Python二進制轉換
舉例來說,我有:
value = '\x11'
如果你
bin(ord(value))
你得到的輸出
'0b10001'
,而我希望能得到
'0b00010001'
我基本上試圖讀取一個32字節的標題,把它變成1和0,所以我可以抓住不同含義的不同位。
我想將一些文件的二進制輸出轉換爲不同的類型,並且我一直看到奇怪的東西。Python二進制轉換
舉例來說,我有:
value = '\x11'
如果你
bin(ord(value))
你得到的輸出
'0b10001'
,而我希望能得到
'0b00010001'
我基本上試圖讀取一個32字節的標題,把它變成1和0,所以我可以抓住不同含義的不同位。
爲什麼不只是使用按位運算符?
def is_bit_set(i, x):
"""Check if the i-th bit in x is set"""
return x & (1 << i) > 0
爲了得到需要的結果,請嘗試:
"0b{:08b}".format(ord(value))
如果效率是您的關心,建議使用本機二進制表示的,而不是文字(字符串)二進制表示,對於位運算得多緊湊和高效。
format(ord('\x11'), '08b')
會讓你00010001
,它應該足夠接近你想要的。