首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么把图片转换成十六进制

2012-06-01 
如何把图片转换成十六进制我想把一幅图片,比如jpg,bmp,转换成十六进制存入数组例如:unsigned short logo[]

如何把图片转换成十六进制
我想把一幅图片,比如jpg,bmp,转换成十六进制存入数组
例如:
unsigned short logo[]={
0x5089,0x474E,0x0A0D,0x0A1A,0x0000,0x0D00,0x4849,0x5244,
  .........}

请问应该怎么做呢?谢谢!!!

[解决办法]
你是想把一副图片的数据嵌入你的源代码中吗?如果是,你可以编写一个另外的程序,将bmp文件读入,按c语言数组初始化的形式 输出。比如下面的代码
fp=fopen("aaa.bmp","br");
fseek(fp,0,SEEK_END)
int len=ftell(fp);
fseek(fp,0,SEEK_SET);
short *buff=(short *)malloc(len);
fread(buff,len,1,fp);

printf("unsigned short logo[]={\n");
for (i=0;i<len/2;i++)
printf("0x%04x,",buff[i]);

---------------------------
假如编译好的程序名叫a.exe, 运行"a.exe > tmp.txt",将其输出重定向到一个文件tmp.txt,然后拷贝粘贴到你的源代码。

[解决办法]
在嵌入式中,3楼的办法是常用的一个办法。
我这里也有另外两个办法,这两个命令需要Linux或Cygwin工具:
1. 使用xxd命令,将图片转换为包含图片数据的头文件。
xxd -i test.bmp test.h
2. 使用objdump,把test.bmp直接打包成.o文件,然后再编译到最终的可执行程序中。
参见我的博客。

热点排行