import sys def binary_to_c_array(binary_file_path, c_array_name, output_c_file): # 读取二进制文件 with open(binary_file_path, "rb") as file: binary_data = file.read() # 获取数组长度 array_length = len(binary_data) # 初始化C数组字符串 c_array = "const unsigned char " + c_array_name + "[" + str(array_length) + "] = {\n " # 用于记录当前的偏移地址 offset = 0 # 将二进制数据转换为C数组格式 for i, byte in enumerate(binary_data): # 每16个字节换行 if i % 16 == 0 and i > 0: c_array += "/* Offset: {:#08x} */\n ".format(offset) offset += 16 c_array += "0x{:02X}, ".format(byte) c_array += "/* Offset: {:#08x} */\n".format(offset) # 去掉最后一个逗号和空格 # c_array = c_array.rstrip(", ") # 结束数组定义 c_array += "};\n" # 写入到C文件 with open(output_c_file, "w") as c_file: c_file.write(c_array) # 检查命令行参数数量 if len(sys.argv) != 4: print("Usage: python script.py ") sys.exit(1) # 从命令行参数获取输入 binary_file_path = sys.argv[1] c_array_name = sys.argv[2] output_c_file = sys.argv[3] # 转换二进制文件并保存为C数组 binary_to_c_array(binary_file_path, c_array_name, output_c_file) print(f"C array has been written to {output_c_file}")