2009年3月29日星期日

二进制与文本文件的区别

http://topic.csdn.net/t/20050518/17/4017296.html
文本文件也称ASCII文件,在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:
ASC码:  00110101 00110110 00110111 00111000
↓     ↓    ↓    ↓
十进制码: 5     6    7    8
共占用4个字节。ASCII码文件可在屏幕上按字符显示,
例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。
由于是按字符显示,因此能读懂文件内容。
二进制文件是按二进制的编码方式来存放文件的。
例如,
数5678的存储形式为:
00010110 00101110只占二个字节。
二进制文件虽然也可在屏幕上显示,但其内容无法读懂。
C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。
输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。
因此也把这种文件称作"流式文件"。
------------
数据就是数据,关键看你怎么使用了,如果说区别,就是文本文件载入的时候,会把回车换行2个符号转换成回车符号,而吃掉换行符,存盘的时候把这个吃掉的换行符吐回去...
至于也可以把文本文件当初数据文件来读,纯粹是看应用了。
就好比有人问10进制,16进制的区别,纯粹就是一回事 !!!
都是数据,只不过看问题的角度不同而已,只是你观察角度不同而已。他们都是一样的。
好比'1'
你用文本文件看是'1',你用16进制工具看是0x31
实际上都是0x31,或者是0x0011 0001
-------------
没有区别,从文件系统的角度,所有的文件都是一个顺序的比特集合,区别在于程序如何解读这些数据,一段数据可以看成是文本,图像或者声音
------------------
说到底计算机存储的文件都是以二进制形式存储的,但是区别是,习惯上认为:
1)、文本文件
文本文件是包含用户可读信息的文件。这些文件以ASCII码方式存储,可显示和打印。文本文件的行不能包括空字符(即码中的NULL),行的最大
长度(包括换行符在内)也不能超过(LINE_MAX)所定义的字节数。不过文本文件中并不限制使用除空字符以外的控制字符或其它不可打印字符。
(2)、二进制文件(实际上这种说法不准确,因为文本文件也是用二进制代码存放的,称为非文本文件比较好)
二进制文件是包含计算机可读信息的文件。二进制文件可以是可执行的文件,使系统根据其中的指令完成某项工作。命令和程序都是以可执行的而进制文件方式存储。二进制文件没有行的长度限制,也可包含空字符。
--------------
http://www.net0791.com/article/45480.htm
看个例子:
#include<stdio.h>
int main()
{
FILE *fp;
int i = 12;
int j = 12;
fp = fopen("01.txt","wb");
fprintf(fp,"%d",i);
fputc('\n',fp);
fwrite(&j,sizeof(int),1,fp);
fclose(fp);
return 0;
}
看输出结果。
linux:~/test # od -x 01.txt
0000000 3231 0c0a 0000 0000
即使是用二进制打开,但如果你用fputc,fputs,fprintf这些函数,其实还是和用文本文件打开一样。
只有用到fwrite/fread函数,才会看到一个整形占4个字节。
按二进制写文件指的是直接按照数据在内存中的表现形式写入文件。例如,如果int型数据在内存中用
4 个字节表示,则写这个int数据的时候直接把对应的内存中 4
个字节的内容写入文件。在此过程中数据不需要做任何转换,所以效率较高。

据有字符型和非字符型(数)两种。按文本方式写文件指的是将数据转换为对应的字符型数据之后再写入文件。对于字符型数据,由于其本身就是ASCII码字
符,一般不必转换,直接写入文件。但是,由于不同的系统对于换行符('\n')有不同的处理(转换)方式,在有的系统(如Windows)下也会对
'\ n' 作适当的转换。
对于非字符型数据,都要进行转换处理。例如:int m = 12; 以及 double f =
2.3;,分别按照 "%d"、"%lf" 方式将 m 和 f 写入文件的时候,写入的分别是
'1'、'2' 两个字符以及 '2'、'.'、 '3'
等三个字符的ASCII码值。显然,如果按照二进制方式写的话,在文件中一般 m 要占
4 个字节、f 要占 8 个字节
------------------
http://www.80diy.com/home/20020504/20/698376.html
PS:
binary file中有许多是不可见字符(它本来就不是用来看的),
而text file都是可见字符(这些字符可能属于不同的字符集)Top

你自己慢慢会明白其实人们做的这种区分本身就很模糊的。
比如说word文件,他应该算是是二进制文件,但它里面却又一大块unicode的数据区。
所有文件都能以二进制方式打开,也都能以文本方式打开。
只不过人们通常把仅由可见字符构成的文件称为"文本文件。
二进制与文本文件的区别
http://topic.csdn.net/t/20050518/17/4017296.html
文本文件也称ASCII文件,在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:
ASC码:  00110101 00110110 00110111 00111000
↓     ↓    ↓    ↓
十进制码: 5     6    7    8
共占用4个字节。ASCII码文件可在屏幕上按字符显示,
例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。
由于是按字符显示,因此能读懂文件内容。
二进制文件是按二进制的编码方式来存放文件的。
例如,
数5678的存储形式为:
00010110 00101110只占二个字节。
二进制文件虽然也可在屏幕上显示,但其内容无法读懂。
C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。
输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。
因此也把这种文件称作"流式文件"。
------------
数据就是数据,关键看你怎么使用了,如果说区别,就是文本文件载入的时候,会把回车换行2个符号转换成回车符号,而吃掉换行符,存盘的时候把这个吃掉的换行符吐回去...
至于也可以把文本文件当初数据文件来读,纯粹是看应用了。
就好比有人问10进制,16进制的区别,纯粹就是一回事 !!!
都是数据,只不过看问题的角度不同而已,只是你观察角度不同而已。他们都是一样的。
好比'1'
你用文本文件看是'1',你用16进制工具看是0x31
实际上都是0x31,或者是0x0011 0001
-------------
没有区别,从文件系统的角度,所有的文件都是一个顺序的比特集合,区别在于程序如何解读这些数据,一段数据可以看成是文本,图像或者声音
------------------
说到底计算机存储的文件都是以二进制形式存储的,但是区别是,习惯上认为:
1)、文本文件
文本文件是包含用户可读信息的文件。这些文件以ASCII码方式存储,可显示和打印。文本文件的行不能包括空字符(即码中的NULL),行的最大
长度(包括换行符在内)也不能超过(LINE_MAX)所定义的字节数。不过文本文件中并不限制使用除空字符以外的控制字符或其它不可打印字符。
(2)、二进制文件(实际上这种说法不准确,因为文本文件也是用二进制代码存放的,称为非文本文件比较好)
二进制文件是包含计算机可读信息的文件。二进制文件可以是可执行的文件,使系统根据其中的指令完成某项工作。命令和程序都是以可执行的而进制文件方式存储。二进制文件没有行的长度限制,也可包含空字符。
--------------
http://www.net0791.com/article/45480.htm
看个例子:
#include<stdio.h>
int main()
{
FILE *fp;
int i = 12;
int j = 12;
fp = fopen("01.txt","wb");
fprintf(fp,"%d",i);
fputc('\n',fp);
fwrite(&j,sizeof(int),1,fp);
fclose(fp);
return 0;
}
看输出结果。
linux:~/test # od -x 01.txt
0000000 3231 0c0a 0000 0000
即使是用二进制打开,但如果你用fputc,fputs,fprintf这些函数,其实还是和用文本文件打开一样。
只有用到fwrite/fread函数,才会看到一个整形占4个字节。
按二进制写文件指的是直接按照数据在内存中的表现形式写入文件。例如,如果int型数据在内存中用
4 个字节表示,则写这个int数据的时候直接把对应的内存中 4
个字节的内容写入文件。在此过程中数据不需要做任何转换,所以效率较高。

据有字符型和非字符型(数)两种。按文本方式写文件指的是将数据转换为对应的字符型数据之后再写入文件。对于字符型数据,由于其本身就是ASCII码字
符,一般不必转换,直接写入文件。但是,由于不同的系统对于换行符('\n')有不同的处理(转换)方式,在有的系统(如Windows)下也会对
'\ n' 作适当的转换。
对于非字符型数据,都要进行转换处理。例如:int m = 12; 以及 double f =
2.3;,分别按照 "%d"、"%lf" 方式将 m 和 f 写入文件的时候,写入的分别是
'1'、'2' 两个字符以及 '2'、'.'、 '3'
等三个字符的ASCII码值。显然,如果按照二进制方式写的话,在文件中一般 m 要占
4 个字节、f 要占 8 个字节
------------------
http://www.80diy.com/home/20020504/20/698376.html
PS:
binary file中有许多是不可见字符(它本来就不是用来看的),
而text file都是可见字符(这些字符可能属于不同的字符集)Top

你自己慢慢会明白其实人们做的这种区分本身就很模糊的。
比如说word文件,他应该算是是二进制文件,但它里面却又一大块unicode的数据区。
所有文件都能以二进制方式打开,也都能以文本方式打开。
只不过人们通常把仅由可见字符构成的文件称为"文本文件。
二进制与文本文件的区别
http://topic.csdn.net/t/20050518/17/4017296.html
文本文件也称ASCII文件,在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:
ASC码:  00110101 00110110 00110111 00111000
↓     ↓    ↓    ↓
十进制码: 5     6    7    8
共占用4个字节。ASCII码文件可在屏幕上按字符显示,
例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。
由于是按字符显示,因此能读懂文件内容。
二进制文件是按二进制的编码方式来存放文件的。
例如,
数5678的存储形式为:
00010110 00101110只占二个字节。
二进制文件虽然也可在屏幕上显示,但其内容无法读懂。
C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。
输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。
因此也把这种文件称作"流式文件"。
------------
数据就是数据,关键看你怎么使用了,如果说区别,就是文本文件载入的时候,会把回车换行2个符号转换成回车符号,而吃掉换行符,存盘的时候把这个吃掉的换行符吐回去...
至于也可以把文本文件当初数据文件来读,纯粹是看应用了。
就好比有人问10进制,16进制的区别,纯粹就是一回事 !!!
都是数据,只不过看问题的角度不同而已,只是你观察角度不同而已。他们都是一样的。
好比'1'
你用文本文件看是'1',你用16进制工具看是0x31
实际上都是0x31,或者是0x0011 0001
-------------
没有区别,从文件系统的角度,所有的文件都是一个顺序的比特集合,区别在于程序如何解读这些数据,一段数据可以看成是文本,图像或者声音
------------------
说到底计算机存储的文件都是以二进制形式存储的,但是区别是,习惯上认为:
1)、文本文件
文本文件是包含用户可读信息的文件。这些文件以ASCII码方式存储,可显示和打印。文本文件的行不能包括空字符(即码中的NULL),行的最大
长度(包括换行符在内)也不能超过(LINE_MAX)所定义的字节数。不过文本文件中并不限制使用除空字符以外的控制字符或其它不可打印字符。
(2)、二进制文件(实际上这种说法不准确,因为文本文件也是用二进制代码存放的,称为非文本文件比较好)
二进制文件是包含计算机可读信息的文件。二进制文件可以是可执行的文件,使系统根据其中的指令完成某项工作。命令和程序都是以可执行的而进制文件方式存储。二进制文件没有行的长度限制,也可包含空字符。
--------------
http://www.net0791.com/article/45480.htm
看个例子:
#include<stdio.h>
int main()
{
FILE *fp;
int i = 12;
int j = 12;
fp = fopen("01.txt","wb");
fprintf(fp,"%d",i);
fputc('\n',fp);
fwrite(&j,sizeof(int),1,fp);
fclose(fp);
return 0;
}
看输出结果。
linux:~/test # od -x 01.txt
0000000 3231 0c0a 0000 0000
即使是用二进制打开,但如果你用fputc,fputs,fprintf这些函数,其实还是和用文本文件打开一样。
只有用到fwrite/fread函数,才会看到一个整形占4个字节。
按二进制写文件指的是直接按照数据在内存中的表现形式写入文件。例如,如果int型数据在内存中用
4 个字节表示,则写这个int数据的时候直接把对应的内存中 4
个字节的内容写入文件。在此过程中数据不需要做任何转换,所以效率较高。

据有字符型和非字符型(数)两种。按文本方式写文件指的是将数据转换为对应的字符型数据之后再写入文件。对于字符型数据,由于其本身就是ASCII码字
符,一般不必转换,直接写入文件。但是,由于不同的系统对于换行符('\n')有不同的处理(转换)方式,在有的系统(如Windows)下也会对
'\ n' 作适当的转换。
对于非字符型数据,都要进行转换处理。例如:int m = 12; 以及 double f =
2.3;,分别按照 "%d"、"%lf" 方式将 m 和 f 写入文件的时候,写入的分别是
'1'、'2' 两个字符以及 '2'、'.'、 '3'
等三个字符的ASCII码值。显然,如果按照二进制方式写的话,在文件中一般 m 要占
4 个字节、f 要占 8 个字节
------------------
http://www.80diy.com/home/20020504/20/698376.html
PS:
binary file中有许多是不可见字符(它本来就不是用来看的),
而text file都是可见字符(这些字符可能属于不同的字符集)Top

你自己慢慢会明白其实人们做的这种区分本身就很模糊的。
比如说word文件,他应该算是是二进制文件,但它里面却又一大块unicode的数据区。
所有文件都能以二进制方式打开,也都能以文本方式打开。
只不过人们通常把仅由可见字符构成的文件称为"文本文件。

没有评论: