浅谈C语言中文本文件与二进制文件

来源:互联网 发布:大数据时代的政治机遇 编辑:程序博客网 时间:2024/05/22 12:27

C语言中,按文件中的数据组织形式来分,数据文件可分为ASCII码文件(即文本文件)和二进制文件。

文本文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。

二进制文件把数据按其在内存中的存储形式存放在磁盘上,一个字节并不一定对应一个字符。


对于ASCII编码,它是单字节编码系统,使用7位或8位二进制数组合来表示128 或256 种可能的字符,标准ASCII码是使用7位,剩下的那位最高位为0。故而标准ASCII码可以表示的字符是128个,涵盖了大小写字母,数字0~9,标点符号以及特殊的控制字符。详细的可以查看ASCII的百度词条。

对于字母的处理,二者并无区别。而对于数字的处理则有不同:

比如10这个数,在ASCII编码中,把它当做两个字符即用一个字节来表示1,用另一字节来表示0,对应的编码是0011000100110000

在二进制编码中,采用的方式并不是一个字符对应一个字节,而是数据在C语言中的类型来编码,比如 是int型的10,那么就用4个字节表示( 具体int型是用4个还是2个字节表示可能会有出路,visual c++ 6.0中是用4字节表示,不管是几个,直接调用int x = sizeof(int);这个语句,最后x的值便是int型占据的字节数)若就是用四个字节表示int型的数,那么对应的编码应该是00000000_00000000_00000000_00001010(中间的_是为了便于阅读手动添加的)。四个字节可以表示的数的范围是0~65535,也就是在这之间的数都是用四个字节表示出来。

可以看到,文本文件中一个字符就是对应着一个字节,而二进制文件中,需要按照该数在程序中的数据类型来确定用几个字节来表示它。

原创粉丝点击