230425 根据源码自动生成bin文件并写入相应SN

该文描述了一个使用PythonTKinter库创建图形界面,以选择.bin文件并进行处理的过程。文件被以二进制模式打开,内容逐字节读取,然后进行Checksum计算,最终将Checksum以特定格式写入。过程中涉及到字节到十六进制的转换以及数据类型的操作。
摘要由CSDN通过智能技术生成

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'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值