hex数据转换脚本

该文章介绍了一个Python脚本,名为hex2text,它包含两个函数get_num_str和get_data_from_hex。这些函数从十六进制文件中读取数据,并将其转换为二进制、八进制或十进制格式。main.py示例展示了如何使用这个脚本来处理数据并输出到文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

save d:/data/array.hex 0x20000358,0x20001357

hex文件用以下代码转换:

hex2text.py

def _get_num_str(hexstr:str, width:int, base:int, signed:bool):
    if base not in [2, 8, 10, 16]:
        raise Exception("width value must be 1, 2, 4 or 8")
    bytes = []
    bytenum = width
    for i in range(width)[::-1]:
        bytes.append(hexstr[i*2:i*2+2])
    num_str = ''.join(bytes)
    if base == 16:
        return num_str
    num = int(num_str, 16)
    if base == 2:
        return bin(num)
    if base == 8:
        return oct(num)
    if base == 10:
        if signed:
            return str(num - (1 << (width * 8)))
        return str(num)


def get_data_from_hex(file, width, base=10, signed=False):
    data = []
    with open(file, 'r') as f:
        lines = f.readlines()
        for i, line in enumerate(lines):
            if i >= 1:
                datasize = int(line[1:3], 16)
                typesize = datasize // width
                offset = 9
                for j in range(typesize):
                    data.append(_get_num_str(line[offset:], width, base, signed))
                    offset = offset + width * 2
    return data

main.py

import sys
from hex2text import get_data_from_hex

data = get_data_from_hex('demo.txt', 2, 10)

if len(sys.argv) == 1: 
    for d in data:
        print(d)
else:
    with open(sys.argv[1], 'w') as f:
        for d in data:
            f.write(d)
            f.write('\n')

代码放在 https://github.com/tangshaozhu/hex2text

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值