将txt文件转化为二进制文件

#include <stdio.h>
#include <string.h>

int getdiff(char ch);
void main(void)
{
	FILE *rfp,*wfp;
	char msg[256];

	rfp=fopen("..\\ADS_B20141112.txt","r");
	wfp=fopen("..\\ADS_B20141112.dat","w+b");

	if (rfp==NULL || wfp==NULL)
		return;

	int i,num;
	while (!feof(rfp))
	{
		fgets(msg,256,rfp);
		i=0;
		while (msg[i]!=0x0a && i<256)//0x0a代表换行符,应为该文本打印出来是16进制的格式所以读取的ASCII的值是16进制的,而16进制中0x0a正好代表换行符
		{
			num=0;
			num=getdiff(msg[i])*16;//*16,
			num+=getdiff(msg[i+1]);//加上后一位

			i+=3;//跳过空格
			fwrite(&num,1,1,wfp);//fwrite(指针存放输出数据的首地址,数据块的字节数,读取数据块的个数,文本指针)?不确定打印的结果1个字节1个字节打印所以用1
		}
	}
	fclose(wfp);
	fclose(rfp);
}

int getdiff(char ch)
{
	int diff=0;
	if (ch>='0' && ch<='9')
		diff=ch-'0';
	if (ch>='A' && ch<='F')
		diff=ch-'A'+10;//换位11到15的数字

	return diff;

}

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值