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

沒有留言:

張貼留言

[Linux 文章收集] Centos7 的 ifconfig 和 netstat

Source From  Here   Preface   Centos7/RHEL 7 的  ifconfig ,  netstat ,  route  和  traceroute  都不見了,其實 Centos6 就已經有一些變革,只是  netstat  和  ifco...