python将二进制数据的bin文件转换成16进制数组形式的C源文件

"""
将二进制数据的bin文件转换成C语言数组的形式并保存为 .c 源文件
"""
import sys


def main():
    if not sys.argv[1]:
        print("bin file error")
        return
    binListData = []
    # 读取二进制文件存放到list列表中
    file = open(sys.argv[1], 'rb')
    file.seek(0, 0)
    while True:
        binByte = file.read(1)
        if len(binByte) == 0:
            break
        else:
            binListData.append("0x%.2x" % ord(binByte))
    file.close()

    # 将列表中的数据写入到 .c 源文件中
    fileOutput = open("bin2c.c", 'w')
    fileOutput.write("unsigned long hexLength = {};\n".format(len(binListData)))
    fileOutput.write("unsigned char hexData[] = \n")
    fileOutput.write("{\n")
    for i in range(len(binListData)):
        if (i != 0) and (i % 16 == 0):
            fileOutput.write("\n")
            fileOutput.write(binListData[i] + ",")
        elif (i + 1) == len(binListData):
            fileOutput.write(binListData[i])
        else:
            fileOutput.write(binListData[i] + ",")
    fileOutput.write("\n};")
    fileOutput.close()
    print("bin file to C array file success!!!")


if __name__ == '__main__':
    main()

#运行:
#编辑一个bat批处理脚本文件,如下所示,双击该bat文件即可
#python bin2c.py test.bin

你可能感兴趣的:(python编程,python,c语言,开发语言)