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

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

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

  下面我在*.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;

 

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

 

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

 

 

你可能感兴趣的:(文本文件和二进制文件的区别和联系)