您的位置:首页 > 其它

十六进制数据写入到二进制数据文件

2013-05-13 09:06 323 查看
/**********************************************
十六进制数据写入到二进制数据文件
**********************************************/
#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);
}

本文出自 “李海川” 博客,请务必保留此出处http://lihaichuan.blog.51cto.com/498079/1198807
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: