这几天,在看C代码,要做一个imsi的decode 里面的代码都是用C写的,位运算什么的。看的有点乱。
由于要在pc上进行解析,所以打算用python写,那么问题来了Python进行位运算要怎么玩?
看的比较多的教程是把这方面的东西用C来写,用python调用。搜索了一些资料,其实python还是可以来为运算的,关键是尚未掌握调用技巧啊,公司加密软件折腾的!!
原博如下http://blog.csdn.net/bestallen/article/details/51763386
在数字面前添加0b 就可以用二进制表示十进制
二进制 十进制
0b1 1
0b10 2
0b11 3
=======
bin() 函数 该函数的作用是把10进制转换成二进制,是的 idle环境默认是10进制,比较坑爹的是bin()函数输出的是str类型
如果要用bin的输出进行运算,恩 就是那么简单
int(bin(25),2) + 4
========
转换完成之后,就是这几个为运算符了,操作方法跟C一样的。万恶的与或非~~~~!!!又让我想起来数电模电的日子,恩 那段记忆只剩下好繁琐,好难,好无聊!
^ XOR 两者相异,则为1 怎么一点印象都没有啊
& AND 与
| OR 或
>> 右移
<< 左移
在使用位运算的时候经常会用到掩码,比如只保留高位/只保留低位的
higmask = 0b11110000
lowmask = 0b00001111
(data & higmask) >> 4 恩 括号很重要
e.g:
>>> higmask = 0b11110000
>>> 73 & higmask >>4
9
>>> (73 & higmask) >>4
4