使用python脚本把二进制文件(.bin等文件)转C语言数组形式hex文件(.c等文件),具体代码如下:
(1)读取.bin文件数据
(2)生成C语言数组定义
(3)打印C数组,或者保存为.c或者.txt等文件
import os
# 读取二进制文件并转换为十六进制字符串
def read_hex_from_bin(filename):
with open(filename, 'rb') as f:
data = f.read()
hex_data = ''.join(f'{c:02x}' for c in data)
return hex_data
# 生成C语言数组定义
def generate_c_array(hex_data, array_name):
array_size = len(hex_data) // 2 # 假设每个字节转换成了两个十六进制字符
c_array_def = f'const char {array_name}[] = {{'
for i in range(0, len(hex_data), 32): # 每16个字节换行
c_array_def += '\n\t' + ', '.join(f"0x{hex_data[i:i+2]}" for i in range(i, min(i+32, len(hex_data)), 2))
if i + 32 < len(hex_data):
c_array_def += ','
c_array_def += '\n'
c_array_def += '};'
return c_array_def
def write_string_to_txt(string, file_path):
file = open(file_path, "w")
file.write(string)
file.close()
# 使用示例
filename = 'test.bin' # 替换为你的.bin文件名
hex_data = read_hex_from_bin(filename)
array_name = 'data_array' # 定义数组名称
c_array_code = generate_c_array(hex_data, array_name)
# 打印生成的C语言数组代码
#print(c_array_code)
bin_file_path = './test.bin'
# 获取文件大小
file_size = os.path.getsize(bin_file_path)
print(f'The size of the file is: {file_size} bytes:')
print(len(hex_data));
write_string_to_txt(c_array_code,"./hex_file.c")
运行情况如下: