如何按特定规则拆分文本文件中的十六进制数并生成新文件
文本处理需求
现有output.txt文件,内容如下:
number="0x12" bytesize="4" info="0x00000012" number="0xA5" bytesize="8" info="0x00000000bbae321f" number="0x356" bytesize="4" info="0x00000234" number="0x48A" bytesize="8" info="0x00000000a18c3ba3" number="0x156" bytesize="2" info="0x001A" number="0x867" bytesize="1" info="0x0b"
需要生成new.txt文件,规则如下:
- 当
bytesize为8时:- 将
info字段的十六进制字符串拆分为后8位(如0xbbae321f)和前8位(如0x00000000) - 保留原
number值,搭配拆分出的后8位info生成一行(格式:number="原数值" info="后8位") - 原
number的十六进制值加上0x32得到新number,搭配拆分出的前8位info生成一行(格式:number="新数值" info="前8位")
- 将
- 当
bytesize为1、2、4时:
直接保留原number和info字段(去掉bytesize字段)写入一行(格式:number="原数值" info="原info")
最终new.txt的预期格式示例:
number="0x12" info="0x00000012" number="0xA5" info="0xbbae321f" number="0xD7" info="0x00000000" number="0x356" info="0x00000234" number="0x48A" info="0xa18c3ba3" number="0x4BC" info="0x00000000" number="0x156" info="0x001A" number="0x867" info="0x0b"
注:0xD7 = 0xA5 + 0x32,0x4BC = 0x48A + 0x32
实现脚本(Python)
可以用以下Python脚本完成上述处理:
with open('output.txt', 'r') as infile, open('new.txt', 'w') as outfile: for line in infile: line = line.strip() if not line: continue # 解析行内字段 num_part, size_part, info_part = line.split() # 提取number的十六进制数值 num_val = int(num_part.split('=')[1].strip('"'), 16) # 提取bytesize数值 bytesize = int(size_part.split('=')[1].strip('"')) # 提取info的字符串内容 info_str = info_part.split('=')[1].strip('"') if bytesize == 8: # 拆分info的前8位和后8位 prefix = '0x' + info_str[2:10] suffix = '0x' + info_str[10:] # 写入原number对应后8位的行 outfile.write(f'{num_part} info="{suffix}"\n') # 计算新number并写入对应前8位的行 new_num = hex(num_val + 0x32) outfile.write(f'number="{new_num}" info="{prefix}"\n') else: # 直接写入number和info字段 outfile.write(f'{num_part} {info_part}\n')
使用说明
- 将上述脚本保存为
process.py - 确保
output.txt与脚本在同一目录下 - 执行脚本:
python process.py - 执行完成后,同目录下会生成目标文件
new.txt
内容的提问来源于stack exchange,提问作者V_S
相关产品推荐
相关产品推荐

