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

    在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 os

def 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(4const U8 temp[] = 
{
    0x470x490x460x380x390x610x0E0x000x0F0x000xA20xFF0x000x000x000x00
    0x000xFF0x000xFF0x000x000xC00xC00xC00xFF0xFF0x000x800x800x000x00
    0x000xFF0x000x000x000x210xF90x040x010x000x000x030x000x2C0x000x00
    0x000x000x0E0x000x0F0x000x400x030x420x380x0A0xAC0xFE0x400x080x06
    0x420x010x8B0x950xCB0xF70x7D0x430x650x750x1B0xB60x180x800x710x99
    0x8E0x180xBC0x010x500x820xCC0x3B0x870xDF0x020xEF0x2C0x7E0x830x21
    0x000x410x280xCB0x2D0x3C0x9E0x110xAB0x360x890x550x8C0xA10x890x68
    0x260x330x4D0x570x9A0xDC0x150x190x1B0x240x000x000x3B
};

 

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

posted @ 2013-04-08 22:16  洁静精微  阅读(1965)  评论(0编辑  收藏  举报