坑爹阿,python 2.x 的版本中,binascii.crc32计算出来的crc32带负号
2013-01-08 11:15
204 查看
In [32]: binascii.crc32("我们")
Out[32]: -603163415
根據官方文件,在 Python 2.x 的版本中,binascii.crc32 所計算出來的 CRC 值域為 [-2^31, 2^31-1] 之間的有號整數,為了要與一般 C 所實作的 CRC 結果作比對,需要將其轉為無號整數,所以加上「& 0xffffffff」這段來做轉換。如果是 Python 3.x 的版本,其計算結果為 [0, 2^32-1] 間的無號整數,因此不需額外加上修正。
必需这样才能与c计算出来的一致:
In [41]: binascii.crc32("我们")& 0xffffffff
Out[41]: 3691803881L
Out[32]: -603163415
根據官方文件,在 Python 2.x 的版本中,binascii.crc32 所計算出來的 CRC 值域為 [-2^31, 2^31-1] 之間的有號整數,為了要與一般 C 所實作的 CRC 結果作比對,需要將其轉為無號整數,所以加上「& 0xffffffff」這段來做轉換。如果是 Python 3.x 的版本,其計算結果為 [0, 2^32-1] 間的無號整數,因此不需額外加上修正。
必需这样才能与c计算出来的一致:
crc = binascii.crc32(str,crc) & 0xffffffff下面这个才是正确的
In [41]: binascii.crc32("我们")& 0xffffffff
Out[41]: 3691803881L
相关文章推荐
- 用python计算md5,sha1,crc32
- [python]My Unique JsonDiff算法——如何计算2个json串之间的差距并Diff出来(一):编辑距离(Levenshtein)算法
- python:python2版本和python3版本闹出来的纠结
- 用python计算md5,sha1,crc32
- Python多版本切换工具-Pyenv\virtualenv及Anaconda科学计算环境的配置
- Spark RDD编程(Python和Scala版本)----Spark中的RDD就是一个不可变的分布式对象集合,是一种具有兼容性的基于内存的集群计算抽象方法,Spark则是这个方法的抽象。 Spa
- 用python计算md5,sha1,crc32
- Python多版本切换工具-Pyenv\virtualenv及Anaconda科学计算环境的配置
- 简单讲解Python中的数字类型及基本的数学计算
- window 下python2.7与python3.5两版本共存设置
- centos6.5系统将Python2.6.6升级到3.6.3版本
- 使用python自带Venv创建虚拟环境安装多版本python
- python版本冲突问题——多版本共存配置
- Windows下多个Python版本共存
- 数学建模中python常用数学计算库
- 使用python进行普适计算/通用计算
- Python 2与Python 3版本和编码的对比
- pyenv+virtualenv创建多版本隔离python环境
- 在Python3.6版本的Anaconda3中配置Python3.5
- Python/Anaconda多版本共存的解决方案