注:练习的文本数据在附件资源里 https://download.csdn.net/download/qingfengjuechen/11943254
import easygui as g
import os
file_path=g.fileopenbox(default='*.txt')
import numpy as np
import re
#file_path='E:/audio_data_hex_text.txt'
keywords = [
"---",
"alsa_write",
"Wifi",
"dler"
]
isIn = 0
list_nums = []
a_bytes = []
j = 0
f = open(file_path + ".bin", "wb")
f.close()
j = 0
with open(file_path, 'r') as txtfile:
lines=txtfile.readlines()
txtfile.close()
with open(file_path, 'w') as newtxtfile:
#print(lines)
print(len(lines))
for i,rows in enumerate(lines):
#print(j)
j = j+1
##print(rows)
##print("strs len=",len(strs)) # strs len=7
##9377 : 0x0027e342: 0xfffa0000 0xfffa0000 0xfff60000 0xfff60000
strs=rows.split(' ', -1 )
strs_num = len(strs)
##print(strs)
##print(strs[3]+' '+strs[4]+' '+strs[5]+' '+strs[6])
try:
if i in range(0,len(lines)):
isIn = 0;
for keyword in keywords:
if keyword in rows:
isIn = 1;
break
if (isIn == 1):
##print(i)
print("invalid keywords: ", i, rows)
continue
elif (strs_num !=7):
##print(i)
print("invalid format: ", i, rows)
continue
else:
newtxtfile.write(rows)
data0=int(strs[3],16)
data1=int(strs[4],16)
data2=int(strs[5],16)
data3=int(strs[6],16)
##data0=int('0xffffffff',16)
##print(data0)
##a_bytes = bytes.fromhex(strs[3][2:])
##print(a_bytes)
f = open(file_path + ".bin", "ab+")
bytes_data0=data0.to_bytes(length=4,byteorder='big',signed=False)
bytes_data1=data1.to_bytes(length=4,byteorder='big',signed=False)
bytes_data2=data2.to_bytes(length=4,byteorder='big',signed=False)
bytes_data3=data3.to_bytes(length=4,byteorder='big',signed=False)
##print(bytes_data0)
f.write(bytes_data0)
f.write(bytes_data1)
f.write(bytes_data2)
f.write(bytes_data3)
f.close()
except:
print("exception data line: ", i)
continue
newtxtfile.close()