/**********************************************
十六进制数据写入到二进制数据文件
**********************************************/
#include <stdio.h>
int main ()
{
 int buffer;
 int i;
 FILE * inFile;
 FILE * outFile;
 inFile  = fopen ("test.txt","r");
 outFile = fopen ("test.yuv", "w+b");

 for (i = 0; i < 2851200; i++)
 {
  fscanf  (inFile,"%x",&buffer);  //假如buffer=32'h34313233
  fwrite  (&buffer,4,1,outFile);  //则将8'h33,8'h32,8'h31,8'h34依次读入到outFile中
 }                                       
 fclose (inFile);                   
 fclose (outFile);
  return 0;

}

 

将十六进制文件写为二进制举例如下,主要是注意数据的写入顺序

#include <stdio.h>
int main ()
{
 int  buffer;
 int i;
 FILE * inFile;
 FILE * outFile;
 inFile  = fopen ("F:\\H264\\akiyo300_1ref.txt","r");
 outFile = fopen ("testakiyo.264", "w+b");
int t0;int t1;

 for (i = 0; i < 2851200*2; i++)
 {
  fscanf  (inFile,"%x",&buffer); 
   t0=buffer>>8;

fwrite  (&t0,1,1,outFile);  

fwrite  (&buffer,1,1,outFile);  


 }                                       
 fclose (inFile);                   
 fclose (outFile);
  return 0;


}

 

 

 

 

//如果想按8'h34,8'h31,8'h32,8'h33读入,//则可以这样编写代码

 for (i = 0; i < 2851200; i++)
 {
 int t0,t1,t2;

fscanf  (inFile,"%x",&buffer); 

   t0=buffer>>24;t1=buffer>>16;t2=buffer>>8;

fwrite  (&t0,1,1,outFile);  

fwrite  (&t1,1,1,outFile);  

 fwrite  (&t2,1,1,outFile);  

  fwrite  (&buffer,1,1,outFile);  
 }