利用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。
我要解决的问题是判断一个字节的某几位是否为特定的值,比如判断一个字节的前四位是不是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对二进制数据进行按位处理
- 利用Python进行数据分析--数据聚合与分组运算1
- 利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(5) .
- 利用Python进行机器学习和数据挖掘概述
- 《利用python 进行数据分析》要点记录
- linux下利用python进行数据分析(1)Anaconda 安装
- 利用python进行数据分析之pandas库的应用(一)
- mysql 利用二进制日志来进行恢复数据的实例操作
- 利用二进制数据的XOR(异或)运算进行加/解密(C#版)
- Python3中利用Urllib进行表单数据提交(Get,Post)
- 利用Python进行数据分析——第一章:重要Python库安装配置
- Python3中利用Urllib进行表单数据提交(Get,Post)
- C++和python利用struct结构传输二进制数据实现
- [python和大数据-1]利用爬虫登录知乎进行BFS搜索抓取用户信息本地mysql分析【PART1】
- 数据挖掘(Python)——利用sklearn进行数据挖掘,实现算法:svm、knn、C5.0、NaiveBayes
- 利用Python进行数据分析——时间序列[十](1) .
- mysql 利用二进制日志进行数据恢复(mysqlbinlog)
- 利用Python进行数据分析--数据规整化:清理、转换、合并、重塑
- 利用python进行数据分析之数据加载存储与文件格式
- 利用Python进行机器学习和数据挖掘概述