1、定义TK窗口
2、选择源码:通过弹窗方式,选择源码文件,返回其路径
#只能打开.bin文件,得到文件路径
choose_file_path = filedialog.askopenfilename(filetypes=[('bin文件', '.bin')])
3、打开源码文件:以二进制的格式打开源码文件,路径为第二步的返回路径
choose_file = open(choose_file_path, 'rb')
4、读取源码内容:一个字节一个字节得读取
data = choose_file.read(1)
5、checksum处理:将读取的byte转换为十进制相加,与FF相与得到其末8位:
data1 = [data]
a1 = [hex(x) for x in data1[0]] #change to str
a2 = a1[-1][2:] #class str
a3 = int( a2, 16 ) #str--->int
checksum += a3
checksum = checksum & 255
6、CheckSum写入:
#将CheckSum转为hex十六进制,此时返回字符串格式'0x--',将字符串--赋值给a
a = hex(checksum)[2:]
#将字符串a转为十六进制字节型
data = bytes.fromhex(a)
a = '010203040506070809'
data = bytes.fromhex(a)
print(data)
#结果:b'\x01\x02\x03\x04\x05\x06\x07\x08\t'
...
elif i==63: #checksum
data = bytes.fromhex(hex(checksum)[2:])
...
7、其他方式(错误):
data = bytes(chr(int(hex(checksum)[-2:],16)),encoding='utf-8')
#<class 'bytes'> b'14'