8214|8

87

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请问什么软件可以将wav等音频文件转换为16进制文件(转换为可以在arm上直接使用的格式) [复制链接]

请问mini2440上面的WindowsXP_Wav.h音频是用什么软件转换来的
此帖出自ARM技术论坛

最新回复

int main(int argc, char **argv) { int  ch        = 0; int  count        = 0; int  maxcnt = 0; FILE *sf, *df; if (argc < 3) { printf("Too less param!\n\nUsage: gendata [sf] [df]\n"); exit(0); } sf = fopen(argv[1], "r"); if (sf == NULL) { printf("Open source file [%s] fail!\n", argv[1]); exit(0); } df = fopen(argv[2], "w"); if (df == NULL) { printf("Open dist file [%s] fail!\n", argv[2]); exit(0); } if( 4 == argc ) maxcnt = str2int(argv[3]); maxcnt *= 1024*10; fprintf(df, "/* %s: Data generated from '%s'*/\n\n", argv[2], argv[1]); fprintf(df, "#include \n"); fprintf(df, "#if defined(CONFIG_xxxxx)\n"); fprintf(df, "#ifndef CONFIG_ROMFS_FROM_ROM\n"); if( maxcnt > 0 ) fprintf(df, "#define xxxxx_ROMFS_RW\n");        else fprintf(df, "#undef xxxxx_ROMFS_RW\n"); fprintf(df, " unsigned char romfs_data[] =\n"); fprintf(df, " {\n"); while ((ch = fgetc(sf)) != EOF)     {     fprintf(df, "  0x%02X,", ch);     count++;     if ((count%8) == 0) fprintf(df, "\n");     }     if( maxcnt > 0 ) { while(maxcnt) { fprintf(df, "  0x00,");     count++;     maxcnt--;     if ((count%8) == 0) fprintf(df, "\n");        } } printf("data len %ld transfered\n", count); fprintf(df, " };"); fprintf(df, "\n"); fprintf(df, "#endif /* #ifndef CONFIG_ROMFS_FROM_ROM */\n"); fprintf(df, "#endif /* #if defined(CONFIG_xxxxx) */\n"); fprintf(df, "/* end this file */\n"); fprintf(df, "\n"); fclose(sf); fclose(df); exit(0); } 这个是用VS运行么???还是用其他linux的软件???  详情 回复 发表于 2010-3-18 10:25
点赞 关注
 

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
同问
此帖出自ARM技术论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
直接把wav文件读出来放到你的系统里面就行了。知道wav的数据结构记忆行。很简单,就性bmp一样
此帖出自ARM技术论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
lz的意思是不是WAV文件中的数据保存的H文件里?
你可以自己写个简单的程序实现。
给个linux下的简单流程,好久写的,参考一下吧
int main(int argc, char **argv)
{
int  ch        = 0;
int  count        = 0;
int  maxcnt = 0;
FILE *sf, *df;

if (argc < 3)
{
        printf("Too less param!\n\nUsage: gendata [sf] [df]\n");
        exit(0);
}


sf = fopen(argv[1], "r");
if (sf == NULL)
{
        printf("Open source file [%s] fail!\n", argv[1]);
        exit(0);
}

df = fopen(argv[2], "w");
if (df == NULL)
{
        printf("Open dist file [%s] fail!\n", argv[2]);
        exit(0);
}
       
        if( 4 == argc )
                maxcnt = str2int(argv[3]);
       
        maxcnt *= 1024*10;


fprintf(df, "/* %s: Data generated from '%s'*/\n\n", argv[2], argv[1]);

fprintf(df, "#include \n");

fprintf(df, "#if defined(CONFIG_xxxxx)\n");
fprintf(df, "#ifndef CONFIG_ROMFS_FROM_ROM\n");


if( maxcnt > 0 )
        fprintf(df, "#define xxxxx_ROMFS_RW\n");       
else
        fprintf(df, "#undef xxxxx_ROMFS_RW\n");

fprintf(df, " unsigned char romfs_data[] =\n");
fprintf(df, " {\n");
while ((ch = fgetc(sf)) != EOF)
    {
     fprintf(df, "  0x%02X,", ch);
     count++;
     if ((count%8) == 0) fprintf(df, "\n");
    }
   
        if( maxcnt > 0 )
        {
                while(maxcnt)
                {
                        fprintf(df, "  0x00,");
                     count++;
                     maxcnt--;
                     if ((count%8) == 0) fprintf(df, "\n");                       
                }
        }

printf("data len %ld transfered\n", count);
fprintf(df, " };");
fprintf(df, "\n");

fprintf(df, "#endif /* #ifndef CONFIG_ROMFS_FROM_ROM */\n");
fprintf(df, "#endif /* #if defined(CONFIG_xxxxx) */\n");
fprintf(df, "/* end this file */\n");
fprintf(df, "\n");


fclose(sf);
fclose(df);
exit(0);
}

  
此帖出自ARM技术论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
有个转换的软件,winHex好像是这个
此帖出自ARM技术论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 l_thread 的回复:
有个转换的软件,winHex好像是这个

为什么只有xp启动音不是乱码,其它都是乱码
此帖出自ARM技术论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
学习了
此帖出自ARM技术论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 
不是乱码,用winhex显示出16进制的代码。是原始数据。
至于你说的乱码,只是Ascii或者unicode显示出来的效果而已。前面部分或许是正常的ascii吗,当然显示出的字符,看上去很清楚而已。
此帖出自ARM技术论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
int main(int argc, char **argv)
{
int  ch        = 0;
int  count        = 0;
int  maxcnt = 0;
FILE *sf, *df;

if (argc < 3)
{
printf("Too less param!\n\nUsage: gendata [sf] [df]\n");
exit(0);
}


sf = fopen(argv[1], "r");
if (sf == NULL)
{
printf("Open source file [%s] fail!\n", argv[1]);
exit(0);
}

df = fopen(argv[2], "w");
if (df == NULL)
{
printf("Open dist file [%s] fail!\n", argv[2]);
exit(0);
}

if( 4 == argc )
maxcnt = str2int(argv[3]);

maxcnt *= 1024*10;


fprintf(df, "/* %s: Data generated from '%s'*/\n\n", argv[2], argv[1]);

fprintf(df, "#include \n");

fprintf(df, "#if defined(CONFIG_xxxxx)\n");
fprintf(df, "#ifndef CONFIG_ROMFS_FROM_ROM\n");


if( maxcnt > 0 )
fprintf(df, "#define xxxxx_ROMFS_RW\n");       
else
fprintf(df, "#undef xxxxx_ROMFS_RW\n");

fprintf(df, " unsigned char romfs_data[] =\n");
fprintf(df, " {\n");
while ((ch = fgetc(sf)) != EOF)
    {
    fprintf(df, "  0x%02X,", ch);
    count++;
    if ((count%8) == 0) fprintf(df, "\n");
    }
   
if( maxcnt > 0 )
{
while(maxcnt)
{
fprintf(df, "  0x00,");
    count++;
    maxcnt--;
    if ((count%8) == 0) fprintf(df, "\n");       
}
}

printf("data len %ld transfered\n", count);
fprintf(df, " };");
fprintf(df, "\n");

fprintf(df, "#endif /* #ifndef CONFIG_ROMFS_FROM_ROM */\n");
fprintf(df, "#endif /* #if defined(CONFIG_xxxxx) */\n");
fprintf(df, "/* end this file */\n");
fprintf(df, "\n");


fclose(sf);
fclose(df);
exit(0);
}


这个是用VS运行么???还是用其他linux的软件???
此帖出自ARM技术论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表