参考链接:https://www.cnblogs.com/gwb-tech-blog/p/6500763.html
- 功能:将二进制文件转化成常量数组的形式存储,并输出到目标文件中
- 作用:为我们在一些没有文件系统不能调用fopen、fread之类的工程中提供了便利,我们可以以常量数组的形式去访问这些常量数据。
#!/usr/bin/env python3
def readBinFile(filename, list):
'''
将bin文件读取到传入的列表中
'''
f = open(filename, "rb")
while True:
byte = f.read(1)
if len(byte) == 0:
break
else:
list.append("0x{:02X}".format(ord(byte))) #list_data.append("0x%.2X" % ord(t_byte))
# print(list)
def writeCFile(filename, arryname, list, line_num):
'''
将列表中的内容写到目标文件中
'''
f = open(filename, "w+")
size = len(list)
# if (line_len > 10)
assert(line_num > 0)
f.write("const char " + arryname + "[" + str(size) + "] = {\n")
for i in range(0, size):
if ((i + 1) % line_num == 0 and i != size - 1): # 达到一行的数量,换行
f.write(list[i] + ",\n")
elif i == size - 1: # 最后一个数据,不加逗号
f.write(list[i])
else: # 正常情况
f.write(list[i] + ", ")
f.write("}\n")
f.close()
#从键盘获取
binFileName = input("please input bin file name:")
cFileName = input("please input dest file name:")
arryName = input("please input arry name:")
line_num = int(input("please input data number per line:"))
list = []
readBinFile(binFileName, list)
writeCFile(cFileName, arryName, list, line_num)
print("success! please open {} to check".format(cFileName))