程式扎記: [ Python 範例代碼 ] Read the bits in a byte

標籤

2012年6月15日 星期五

[ Python 範例代碼 ] Read the bits in a byte


前言 :
當你在處理 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

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!