/****************************************************
二进制文件文件转换为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;
}
转载于:https://blog.51cto.com/lihaichuan/1198799