利用Python对二进制数据进行按位处理

最近在用Python做数据包解析,遇到一些要按位处理二进制数据的问题。折腾了一个早上,大概有一点思路,记下来备忘吧。

我要解决的问题是判断一个字节的某几位是否为特定的值,比如判断一个字节的前四位是不是0110。

首先,创建一个文档,里面随便写点东西,保存之后用可以查看二进制数据的软件打开,我用的是notepad++里的HEX-Editor插件。

可以看到字符‘a’对应的二进制数据是61(01100001)。下面对这个字节的数据进行处理。

首先是打开文件,用read()函数读进去一个字节,用16进制进行编码,编码之后会变成一个str类型,这时对它进行转换,int()函数可以将一个str转换成int类型,int()函数的第二个参数代表了进制。mask为11110000,我用mask和要处理的字节进行与,可以得到数据前四位的内容。在这里,01100001的前四位是0110,与完的结果是01100000,,即96。

f=open('1.txt','rb')data=int(f.read(1).encode('hex'),16)print dataprint bin(data)mask=0b11110000print maskres=data&maskprint res

一直觉得人应该去旅行,在年轻的时候,趁着有脾气装潇洒,

利用Python对二进制数据进行按位处理

相关文章:

你感兴趣的文章:

标签云: