""" 16进制转10进制 """ # str="A5 42 D2 00 4A 00 01 00 01 F4 00 32 00 32 00 50 01 0C 00 01 00 01 F4 00 32 00 32 00 50 01 01 00 01 00 01 F4 01 F4 01 F4 01 F4 01 F4 00 32 00 32 00 32 00 32 00 32 00 32 00 32 00 32 00 32 00 32 00 50 01 00 00 01 F4 00 32 00 32 50 00 00 00 D2 41 5A " str="" with open("bitChange",mode="r",encoding="UTF-8") as f: #从文件里读数据 str= f.read() lst=str.split(" ")#根据空格切割 lst=lst[5:len(lst)-4]#根据自己实际情况来做,我这里是根据我这边的通讯协议格式来的 dic={} count=0 for c in lst: dic[count]=c count+=1 print(dic) print(lst) #16进制转10进制 new_Lst=[]#得到需要的16进制 starW= int(input("请输入起始位置:"))-1 lenW=int(input("请输入长度:")) new_Lst=lst[starW:lenW+starW] new_Str="".join(new_Lst) print("16进制:{}".format(" ".join(new_Lst))) new_Str=new_Str[::-1] resoult={} resoultCount=0 strs="" while resoultCount<len(new_Str)-1: if new_Str[resoultCount]=="F": resoult[resoultCount]=15 elif new_Str[resoultCount]=="E": resoult[resoultCount] = 14 elif new_Str[resoultCount] == "D": resoult[resoultCount] = 13 elif new_Str[resoultCount] == "C": resoult[resoultCount] = 12 elif new_Str[resoultCount] == "B": resoult[resoultCount] = 11 elif new_Str[resoultCount] == "A": resoult[resoultCount] = 10 else: resoult[resoultCount] = new_Str[resoultCount] resoultCount+=1 sum=0 for k,v in resoult.items(): sum+=int(v)*16**k print("10进制:{}".format(sum))
进制之间的转换可以访问https://www.cnblogs.com/sl372/p/10825885.html