Python實現(xiàn)crc校驗

本篇文章,完全是用來記錄代碼用的躺孝,目的是使用Python享扔,基于Tkinter編寫crc校驗工具底桂。

# -*- coding: utf-8 -*-

import Tkinter
import tkFileDialog

WIDTH = 16
TOPBIT = (1 << (WIDTH - 1))
crcTable = {}

class FindLocation(object):
    def __init__(self):
        #創(chuàng)建主窗口,用于容納其它組件
        self.root = Tkinter.Tk()
        #給主窗口設(shè)置標(biāo)題內(nèi)容
        self.root.title("獲取bin文件的crc校驗碼")
        #創(chuàng)建一個輸入框惧眠,并設(shè)置尺寸
        self.default_value = Tkinter.StringVar()
        self.default_value.set('請輸入bin文件全路徑')
        self.ip_input = Tkinter.Entry(self.root,width=30,textvariable = self.default_value)
        
        #創(chuàng)建一個回顯列表
        self.display_info = Tkinter.Listbox(self.root,width=50)
        
        #創(chuàng)建一個搜索文件的按鈕
        self.getPath_button = Tkinter.Button(self.root,command = self.getPath,text = "獲取文件")
        
        #創(chuàng)建一個查詢結(jié)果的按鈕
        self.result_button = Tkinter.Button(self.root,command = self.crcFast,text = "獲取校驗碼")
        
        
    def gui_arrang(self):
        self.ip_input.pack()
        self.display_info.pack()
        self.getPath_button.pack()
        self.result_button.pack()
        
        
    def getPath(self):
        self.fname = tkFileDialog.askopenfilename()
        self.default_value.set(self.fname)
        
    def crcInit(self):
        SHIFT = WIDTH - 8
        for step in range(0,256):
            remainder = step << SHIFT
            for bit in range(8,0,-1):
                if remainder & TOPBIT:
                    remainder = ((remainder << 1) & 0xFFFF) ^0x1021
                else:
                    remainder = remainder <<1
            crcTable[step]=remainder
            #print("%x"%remainder)
            
    def crc16(self,cCRC,szData,rLen):
        for len in range(rLen):
            data = (cCRC >> 8) ^ ord(szData[len])
            cCRC = crcTable[data] ^ (cCRC << 8) & 0xFFFF
            
        return cCRC
        
    def crcFast(self):
        filePath = self.ip_input.get()
        
        tLen = 0
        rLen = 0
        szData = 0
        cCRC = 0
        self.crcInit()
        fp = open(filePath,'rb')
        fp.seek(0,2)
        iFileLen = fp.tell()
        fp.seek(0,0)
    
        while True:
            if (iFileLen - tLen) < 8192:
                rLen = iFileLen - tLen
            else:
                rLen = 8192
            
            szData = fp.read(rLen)
            cCRC = self.crc16(cCRC,szData,rLen)
            tLen += rLen
            if tLen >= iFileLen:
                break
            
        print "crc is %x\n" % cCRC
        fp.close()
        
        self.display_info.insert(0,"%x"%cCRC)
        self.display_info.insert(0,"this bin crc is :")    
        

def main():
    #初始化對象
    FL = FindLocation()
    #進行布局
    FL.gui_arrang()
    #主程序執(zhí)行
    Tkinter.mainloop()


if __name__ == '__main__':
    
    main()

出差必備

買火車票籽懦、高鐵票、機票氛魁,訂酒店都打9折的出行工具TRIP,點擊注冊

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末暮顺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子秀存,更是在濱河造成了極大的恐慌捶码,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件或链,死亡現(xiàn)場離奇詭異惫恼,居然都是意外死亡,警方通過查閱死者的電腦和手機澳盐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門祈纯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叼耙,你說我怎么就攤上這事盆繁。” “怎么了旬蟋?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵油昂,是天一觀的道長。 經(jīng)常有香客問我倾贰,道長冕碟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任匆浙,我火速辦了婚禮安寺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘首尼。我一直安慰自己挑庶,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布软能。 她就那樣靜靜地躺著迎捺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪查排。 梳的紋絲不亂的頭發(fā)上凳枝,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音跋核,去河邊找鬼岖瑰。 笑死叛买,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蹋订。 我是一名探鬼主播率挣,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼露戒!你這毒婦竟也來了椒功?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤玫锋,失蹤者是張志新(化名)和其女友劉穎蛾茉,沒想到半個月后讼呢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撩鹿,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年悦屏,在試婚紗的時候發(fā)現(xiàn)自己被綠了节沦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡础爬,死狀恐怖甫贯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情看蚜,我是刑警寧澤叫搁,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站供炎,受9級特大地震影響渴逻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜音诫,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一惨奕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧竭钝,春花似錦梨撞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至庇茫,卻和暖如春幽勒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背港令。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工啥容, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锈颗,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓咪惠,卻偏偏與公主長得像击吱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子遥昧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355