溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python基于Tkinter怎么編寫crc校驗工具

發布時間:2020-07-28 16:16:39 來源:億速云 閱讀:190 作者:小豬 欄目:開發技術

這篇文章主要講解了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校驗工具有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女