[MTK FP]用Python把二进制音频/图片文件转为数组

来源:互联网 发布:淘宝怎么找人工小蜜 编辑:程序博客网 时间:2024/05/27 00:31

    在MTK平台,音频/图片文件基本以数组的形式存在,一般MTK会提供工具来转换音频/图片文件为数组。

    这里使用python来实现把二进制文件转为数组,目的有两个:

   1. 把python程序转换的二进制数组替换目前代码中已有的数组,可以实现快速验证;
   2. 对于比较大的二进制文件,MTK提供的工具未必支持转换,这个时候就可以用这里的python程序来转换。

 

    下面是python程序,替换掉input_f和output_f为你输入的二进制文件盒输出数组的文件名称即可:

# -*- coding: utf-8 -*-# It is ok at python-3.3.1rc1.msi installer condition.import osdef read_data_from_binary_file(filename, list_data):    f = open(filename, 'rb')    f.seek(0, 0)    while True:        t_byte = f.read(1)        if len(t_byte) == 0:            break        else:            list_data.append("0x%.2X" % ord(t_byte))def write_data_to_text_file(filename, list_data):    f_output = open(filename, 'w+')    f_output.write('__align(4) const U8 temp[] = \n')    f_output.write('{\n    ')    count = 0    lenth = len(list_data)    for data in list_data:        count += 1        if count != lenth:            f_output.write(data+', ')        else:            f_output.write(data)        if count%16==0:            f_output.write('\n    ')    f_output.write('\n};')    f_output.close()list_data = []input_f = r'python.gif'output_f = r'python.txt'read_data_from_binary_file(input_f, list_data)write_data_to_text_file(output_f, list_data)


    上面示例中的python.gif文件:

   

    生成的数组如下:

__align(4) const U8 temp[] = {    0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x0E, 0x00, 0x0F, 0x00, 0xA2, 0xFF, 0x00, 0x00, 0x00, 0x00,     0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x80, 0x80, 0x00, 0x00,     0x00, 0xFF, 0x00, 0x00, 0x00, 0x21, 0xF9, 0x04, 0x01, 0x00, 0x00, 0x03, 0x00, 0x2C, 0x00, 0x00,     0x00, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x40, 0x03, 0x42, 0x38, 0x0A, 0xAC, 0xFE, 0x40, 0x08, 0x06,     0x42, 0x01, 0x8B, 0x95, 0xCB, 0xF7, 0x7D, 0x43, 0x65, 0x75, 0x1B, 0xB6, 0x18, 0x80, 0x71, 0x99,     0x8E, 0x18, 0xBC, 0x01, 0x50, 0x82, 0xCC, 0x3B, 0x87, 0xDF, 0x02, 0xEF, 0x2C, 0x7E, 0x83, 0x21,     0x00, 0x41, 0x28, 0xCB, 0x2D, 0x3C, 0x9E, 0x11, 0xAB, 0x36, 0x89, 0x55, 0x8C, 0xA1, 0x89, 0x68,     0x26, 0x33, 0x4D, 0x57, 0x9A, 0xDC, 0x15, 0x19, 0x1B, 0x24, 0x00, 0x00, 0x3B};

 

PS:目前MTK平台图片文件都有header,所以转换的数组要加上header才能生效,这里对于此只是一个示例,需要实现全功能的人可以自行修改程序。

原创粉丝点击