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

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...