Python 2.x crc32sum function

Python 2.x 版 產生 CRC32 的 Hash Code 的函式

由於 2.x 版中,zlib.crc32 回傳值是 Signed Int 型態,所以有可能算出來的結果會是 「負值」。

因為 2.x 版 回傳值範圍落於 -2^32 ~ 2^32 之間。

所以只要將求出的值加上「2^32」,之後在換算成 「16 進位」 就是我們一般常見的 CRC32 的樣式了。

#!/usr/bin/python
# -*- coding:utf-8 -*-
'''讀取一個檔案並計算它的CRC32值'''
import zlib

def crc32sum(filepath,maxsize):
        crc=0
        with open(filepath,'rb') as openfile:
                while True:
                        data=openfile.read(maxsize)
                        if not data:break
                        crc=zlib.crc32(data,crc)
        return hex(crc+2**32)

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s