/****************************************************
二进制文件文件转换为16进制文件****************************************************/#include <stdio.h>
#define DATA_MAX 3000000unsigned char data[DATA_MAX];int i_read;int i;int main (){ int buffer; int i; FILE * inFile; FILE * outFile; inFile = fopen ("test.264","rb"); //以二进制形式打开读文件 outFile = fopen ("test.txt", "w"); //先将test.264文件中的内容读写到一个很大的数组中,足以装下test.264文件中的所有内容 i_read = fread( &data[0], 1, DATA_MAX, inFile );//文件中的字符均是ASCII码表示,以2进制形式就是8bit,所以unsigned char data[DATA_MAX];数组类型为unsigned char
for( i=0;i<i_read;++i) { if(data[i]<16) //data[i]为8bit,转换为16进制数用两位表示。如2=0000_0010(2)=02(16) { fprintf(outFile,"%x",0); //如果data[i]<16,则写入到outFile文件中只有一位,高位0省略了,所以要加上。如data[i]=0000_0010=2(d)=2(h)=02(h) fprintf(outFile,"%x",data[i]); } else fprintf(outFile,"%x",data[i]); fflush(outFile); } fclose (inFile); fclose (outFile); return 0;}