易截截图软件、单文件、免安装、纯绿色、仅160KB

用python实现crc32求字符串校验码


转帖:
http://blog.csdn.net/wyingquan/archive/2008/12/20/3561094.aspx
用python自带的binascii模块计算字符串的校验码,出来的是负值,与用c写的程序得出的校验码不一样,所以就研究了一下。发现别人用的python3.0版本binascii模块计算出的crc32校验码是我想要的,没办法只好自己用python实现一下crc32的算法了。发现算法很简单,就是某些实现里面弄了好几个函数倒搞复杂了,其实按核心算法算法走一边很容易就理解和应用了。
因为直接从c程序转过来的,结果发现python2.5(我用的版本ActivePython 2.5.2.2 (ActiveState Software Inc.) based on
Python 2.5.2 (r252:60911, Mar 27 2008, 17:57:18) [MSC v.1310 32 bit (Intel)] on win32)里面的按位取反尽然不是按位取反,网上搜出好多文章都说~在python中是按位取反,自己测试了下:
>>> ~3,~2,~1,~0,~-1,~-2,~3
(-4, -3, -2, -1, 0, 1, -4)
才恍然大悟,原来是这里出错了。
再看:
>>> import binascii
>>> binascii.crc32("我们")
-603163415
如果把下面代码的倒数第二行
dwCrc32 = dwCrc32 ^ 0xFFFFFFFFL
改成
dwCrc32 = ~dwCrc32
然后运行:mycrc32("我们") 得到结果也是-603163415
所以怀疑python2.5里面是不是也中了这个陷阱了。
用下面的代码得到的就和c代码计算得到的crc32校验码一致了。不过python支持的正数要比c的大,所以按位求反这里只能保证32位情况下得到和c代码一样的校验码。
#coding=gbk
def mycrc32(szString):
    m_pdwCrc32Table = [0 for x in range(0,256)]
    dwPolynomial = 0xEDB88320;
    dwCrc = 0
    for i in range(0,255):
        dwCrc = i
        for j in [8,7,6,5,4,3,2,1]:
            if dwCrc & 1:
                dwCrc = (dwCrc >> 1) ^ dwPolynomial
            else:
                dwCrc >>= 1
     &nb


相关文档:

Python 参数知识(变量前加星号的意义)

过量的参数
在运行时知道一个函数有什么参数,通常是不可能的。另一个情况是一个函数能操作很多对象。更有甚者,调用自身的函数变成一种api提供给可用的应用。
对于这些情况,python提供了两种特别的方法来定义函数的参数,允许函数接受过量的参数,不用显式声明参数。这些“额外”的参数下一步再解释。
注意a ......

python之娱乐类:魔法传值

还记得是一个月的事情,神奇般的在youtube上搜索python,有个老外的教程里面有这么个内容:
#=============================
## python 魔法传值
#============================= 
#-*-coding:utf-8-*-
class sono:
    def Dict(self,**args):
        ret ......

python操作excel性能问题求助

http://bbs.chinaunix.net/thread-1586782-1-1.html
我刚刚用python写了一段操作excel的脚本,目的是把一个excel文件按照某一列中的字段拆分成多个文件,例如按照城市或者省份等,但是发现处理一个1700行的文件拆分成40多个文件时要运行30分钟左右,性能太慢,请高手帮忙看看怎么才能优化性能,谢谢。
新手写的脚本,请不 ......

转帖:Python2.6 下安装 mysql (Windows xp)

转自:
http://hi.baidu.com/feng2211/blog/item/8b86b6d9816a3f2710df9b79.html

http://i.19830102.com/archives/164
Python 版本:2.6
下载地址:http://www.python.org/download/releases/2.6.1/
下载msi文件并安装
MySQLdb版本: MySQL-python-1.2.2.win32-py2.6.exe
下载地址:http://home.netimperia.com/ ......

python 读http小记

conn = httplib.HTTPConnection(EPG_IP + ":" + HTTP_PORT)
url = FAV_URL_PARTH +"userid=" + USER_ID + FAV_DIR_MODIFY
param = '''<ps100request id="Favorite.Category.modify">
<categoryid>'''+categoryid+'''</categoryid>
<categoryname>'''+categoryname+'''</ ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号