Python基于Tkinter编写crc校验工具
程序员文章站
2022-05-07 10:11:29
本篇文章,完全是用来记录代码用的,目的是使用python,基于tkinter编写crc校验工具。# -*- coding: utf-8 -*-import tkinterimport tkfiledi...
本篇文章,完全是用来记录代码用的,目的是使用python,基于tkinter编写crc校验工具。
# -*- coding: utf-8 -*- import tkinter import tkfiledialog width = 16 topbit = (1 << (width - 1)) crctable = {} class findlocation(object): def __init__(self): #创建主窗口,用于容纳其它组件 self.root = tkinter.tk() #给主窗口设置标题内容 self.root.title("获取bin文件的crc校验码") #创建一个输入框,并设置尺寸 self.default_value = tkinter.stringvar() self.default_value.set('请输入bin文件全路径') self.ip_input = tkinter.entry(self.root,width=30,textvariable = self.default_value) #创建一个回显列表 self.display_info = tkinter.listbox(self.root,width=50) #创建一个搜索文件的按钮 self.getpath_button = tkinter.button(self.root,command = self.getpath,text = "获取文件") #创建一个查询结果的按钮 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() #主程序执行 tkinter.mainloop() if __name__ == '__main__': main()
出差必备
买火车票、高铁票、机票,订酒店都打9折的出行工具trip,点击注册
到此这篇关于python基于tkinter编写crc校验工具的文章就介绍到这了,更多相关python实现crc校验内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!