您的位置:首页 > 编程语言 > Python开发

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

2015-02-05 12:06 344 查看
最近在用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 data
print bin(data)

mask=0b11110000
print mask

res=data&mask
print res

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: