码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-02-05 13:38:43      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:

最近在用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
技术分享
技术分享

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

标签:

原文地址:http://blog.csdn.net/u012322724/article/details/43526249

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!