Python CRC32 文件校验
生活随笔
收集整理的這篇文章主要介紹了
Python CRC32 文件校验
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
binascii.crc32(s [,crc]) 返回CRC32校驗(yàn)。參數(shù)'crc'指定初始值用于循環(huán)。例如:?
Code>>>?import?binascii
>>>?crc?=?binascii.crc32('spam')
>>>?binascii.crc32('?and?eggs',?crc)
739139840
>>>?binascii.crc32('spam?and?eggs')
739139840
?
?
Codeimport?binascii?
def?getFileCRC(_path):?
????try:?
????????blocksize?=?1024?*?64?
????????f?=?open(_path,"rb")?
????????str?=?f.read(blocksize)?
????????crc?=?0?
????????while(len(str)?!=?0):?
????????????crc?=?binascii.crc32(str,?crc)?
????????????str?=?f.read(blocksize)?
????????f.close()?
????except:?
????????print?'get?file?crc?error!'?
????????return?0?
????return?crc??
?
?
Codepython?2.X的crc32實(shí)作上跟一般的C實(shí)作上在整數(shù)有號(hào)無(wú)號(hào)的處理上略有不同,?所以使用python?2.X與一般C實(shí)作算出的crc32(如sfv)比對(duì)時(shí),通常需要特別的方法,
這邊列出一個(gè)透過(guò)zlib.crc32快速得到所需要結(jié)果的方法:
import?zlib
def?crc32(st):
????crc?=?zlib.crc32(st)
????if?crc?>?0:
??????return?"%x"?%?(crc)
????else:
??????return?"%x"?%?(~crc?^?0xffffffff)
ex1?=?"12345"
ex2?=?"1kcaseztsa12345azy"
print?"%x"?%?zlib.crc32(ex1)
print?crc32(ex1)
print?"%x"?%?zlib.crc32(ex2)
print?crc32(ex2)
或如果你有ctypes的話:
import?zlib
import?ctypes
def?crc32_c(st):
????return?"%x"?%?ctypes.c_uint32(zlib.crc32(st)).value
ex1?=?"12345"
ex2?=?"1kcaseztsa12345azy"
print?"%x"?%?zlib.crc32(ex1)
print?crc32_c(ex1)
print?"%x"?%?zlib.crc32(ex2)
print?crc32_c(ex2)
註:?python?3.0以上沒(méi)有這個(gè)問(wèn)題.
?
?
Codefrom?ctypes?import?*?
import?binascii?
def?getFileCRC(_path):?
try:?
blocksize?=?1024?*?64?
f?=?open(_path,"rb")?
str?=?f.read(blocksize)?
crc?=?0?
while(len(str)?!=?0):?
crc?=?binascii.crc32(str,?crc)?
str?=?f.read(blocksize)?
f.close()?
except:?
klog.error("get?file?crc?error!")?
return?0?
return?c_uint(crc).value
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/leavingme/archive/2009/06/14/1503120.html
總結(jié)
以上是生活随笔為你收集整理的Python CRC32 文件校验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 通用权限管理模块系列——需求分析——列举
- 下一篇: SQL Server基础知识之:设计和实