文本文件和二进制文件的区别和联系

  今天闲来无事,也学一下别人写一下博客:

  在一些项目中常遇到一些文件的操作,今天就总结一下。或许自己写一写,把思路缕一缕,反正没什么事情;

  下面我在*.txt文件中写了下面一段文字:

abcABCzgm张国敏 其实它真正在硬盘中写入的是(可以通过UltraEdit软件来看):61 62 63 41 42 43 7A 67 6D D5 C5 B9 FA C3 F4;

  这个就是我们常说的,ascii码,即我们看到的时ascii码,而在文件中存储的是二进制数据(而且我们注意到,中文需要两个字节来表达);

在C语言中,读取文件数据的函数是:fgetc(FILE *fp),fread(&buffer,sizeof(char),1,FILE* fp);这两个函数的区别是前面一个函数读取的是一个字符,即我们看到的字符;而使用后面一个函数读取的是存储在硬盘中读取的二进制数据;

同样的道理;使用fputc()和fwrite()这两个函数道理是一样的;

发现一些太简单了!

  道理就是这样简单,下面就是简单的运用;现在tte.c的文件中有这么一个数组const unsigned char data[] = {0x12,0xfa,0x78,0xa0};叫你通过读取文件的形式写一个通用的软件求出里面数据的和;下面我们就来分析如何写这个代码;

求这几个的和就是 Total = 0x12 + 0xfa + 0x78 + 0xa0;但是这里问题出线了,这里的ox12,是实实在在的16进制数据,但是*.c文件里面的是asicc码,所以这里就设计到把获取到的asicc码转化为16进制数据了,即“0x16”--->0x16;这里写一写简单的方法:

unsigned char ch;

int zhi;

ch = fgetc(fp);

if(ch<='9'&&ch>='0')

zhi = ch - 48;

 

elseif(ch<='F'&&ch>='A')

zhi = ch - 55;

 

else

zhi = ch - 87;

 

上面的代码就把字符转化为进制数据了;

 

太简单了,也就我自己看了;哈

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值