前言 :當你在處理 binary 的 data 時, 你可能定義了某個 byte 的某個 bit 代表某個 flag, 而你需要從 byte 讀出某個 bit 可以參考下面範例.
範例代碼 :- 把 byte 轉成二進位字串處理
>>> b = 0x83
>>> "{0:08b}".format(b)
'10000011'
>>> "{0:08b}".format(b)[0] # 從 higher bit 開始取
'1'
>>> "{0:08b}".format(b)[1]
'0'
>>> "{0:08b}".format(b)[3]
'0'
>>> "{0:08b}".format(b)[-1] # 從 lower bit 開啟取.
'1'
>>> "{0:08b}".format(b)[-2]
'1'
>>> "{0:08b}".format(b)[-3]
'0'
- 對 byte 進行 shift
>>> b = 0x83
>>> "{0:08b}".format(b)
'10000011'
>>> def bit(byte, pos): # 定義取出 bit 的函數
... print('{0}'.format((byte >> pos) & 1))
...
>>> bit(b, 0) # 取出 byte=0x1000001'1'
1
>>> bit(b, 1) # 取出 byte=0x100000'1'1
1
>>> bit(b, 2) # 取出 byte=0x10000'0'11
0
沒有留言:
張貼留言