/****************************************************

二进制文件文件转换为16进制文件
****************************************************/

#include <stdio.h>

#define DATA_MAX 3000000
unsigned 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;
}