闲谈ASCII码文件和二进制文件51CTO博客 - 牛牛娱乐

闲谈ASCII码文件和二进制文件51CTO博客

2019-01-03 15:30:34 | 作者: 景天 | 标签: 文件,二进制,方法 | 浏览: 549

咱们在linux操作体系中用得最多的要属所以对文件的操作,只需咱们一进入该操作体系面向的都是对文件的操作。前次在博客中提到了linux的文件体系与windows文件体系及linux下的七种文件类型。其间对文件的分类是根据文件的根本特点,现在从文件的编码方法视点来对文件进行分类能够分为:ASCII码文件(也称文本文件)和二进制文件。

由于两种文件的数据在核算机中都是以二进制的方法存储的,故关于ASCII码文件和二进制文件的差异不是在物理上,而是在逻辑组成上。不同的逻辑组成能够构成不同的存储内容。

ASCII码文件是一个含糊的概念,但绝大部分以为ASCII文件是用来保存字符的。文件中的字节数都是字符的某种编码方法(如:ASCII码 / UTF - 8码);在linux终端能够用指令cat检查其间的字符内容,用vim修改器能够修改其间的的字符,如咱们用vi修改的一切源文件都是ASCII码文件。

二进制文件不是用来保存字符的,文件的字节数表明其他的含义(可履行文件中有些字节表明指令,有些字节表明各Section和Segment在文件中的方位,有些字节表明各Segment的加载地址)。如,方针文件、可履行文件、库文件;用hexdump指令检查一个二进制文件。

现在我做一个小试验,以差异二进制文件和文本文件:

这儿为了能和windows操作体系做比照,我现在windows环境下修改了个text.txt文件(即为ASCII文件),然后输入"12345回车":

我将此文件移到linux操作体系下凭借od指令检查文件的存储方法:

然后用cat指令来显现text.txt文本的内容:

看到这儿咱们很简略了解windows对文本文件(ASCII码文件)的回车处理很特别:

文件输入\n,它将其转成 \r\n,输出的时分将\r\n 转成\n


在来看看在linux下直接用VIM修改相同的文件:

接着再用相同的指令来检查,先看看它的存储方法:

在linux下体系自动为ASCII码文件增加\n,占7个字节;

再看看它文件自身所显现的内容:

内容照我在vim下修改的内容显现。



下面再看看对二进制文件的处理:

我在windows下企图翻开一个二进制文件,但终究失利!但能够预测到翻开的文件绝大部分是0、1序列或许是乱码,在linux下我翻开了一个二进制文件:

乱码序列显现。

后来我在网上查到,windows操作体系不对二进制文件进行转化;linux不区别ASCII码文件和二进制文件。


已然谈到二进制文件和ASCII文件,那么也应该知道点他们的使用吧。下面我将简略的介绍下这两种类型的文件在传输方面的使用:

ASCII传输形式和二进制数据传输形式是FTP的传输的两种方法。

 1.ASCII传输方法:假定用户正在复制的文件包括的简略ASCII码文本,假如在长途机器上运转的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解说成别的那台核算机存储文本文件的格局。
可是常常有这样的状况,用户正在传输的文件包括的不是文本文件,它们可能是程序,数据库,字处理文件或许压缩文件(虽然字处理文件包括的大部分是文本,其间也包括有指示页尺度,字库等信息的非打印字符)。在复制任何非文本文件之前,用binary 指令告诉ftp逐字复制,不要对这些文件进行处理,这也是下面要讲的二进制传输。
  2.二进制传输形式:在二进制传输中,保存文件的位序,以便原始和复制的是逐位一一对应的。即便目的地机器上包括位序列的文件是没含义的。例如,macintosh以二进制方法传送可履行文件到Windows体系,在对方体系上,此文件不能履行。
  假如你在ASCII方法下传输二进制文件,即便不需求也仍会转译。这会使传输略微变慢 ,也会损坏数据,使文件变得不能用。(在大多数核算机上,ASCII方法一般假定每一字符的榜首有用位无含义,由于ASCII字符组合不使用它。假如你传输二进制文件,一切的位都是重要的。)假如你知道这两台机器是相同的,则二进制方法对文本文件和数据文件都是有用的。
   FTP的作业方法
  FTP支撑两种形式,一种方法叫做Standard (也便是 PORT方法,自动方法),一种是 Passive (也便是PASV,被迫方法)。 Standard形式 FTP的客户端发送 PORT 指令到FTP服务器。Passive形式FTP的客户端发送 PASV指令到 FTP Server。
  下面介绍一个这两种方法的作业原理:
  Port形式FTP 客户端首要和FTP服务器的TCP 21端口树立衔接,经过这个通道发送指令,客户端需求接纳数据的时分在这个通道上发送PORT指令。 PORT指令包括了客户端用什么端口接纳数据。在传送数据的时分,服务器端经过自己的TCP 20端口衔接至客户端的指定端口发送数据。 FTP server有必要和客户端树立一个新的衔接用来传送数据。
  Passive形式在树立操控通道的时分和Standard形式相似,但树立衔接后发送的不是Port指令,而是Pasv指令。FTP服务器收到Pasv指令后,随机翻开一个高端端口(端口号大于1024)而且告诉客户端在这个端口上传送数据的恳求,客户端衔接FTP服务器此端口,然后FTP服务器将经过这个端口进行数据的传送,这个时分FTP server不再需求树立一个新的和客户端之间的衔接。
  许多防火墙在设置的时分都是不允许承受外部建议的衔接的,所以许多坐落防火墙后或内网的FTP服务器不支撑PASV形式,由于客户端无法穿过防火墙翻开FTP服务器的高端端口;而许多内网的客户端不能用PORT形式登陆FTP服务器,由于从服务器的TCP 20无法和内部网络的客户端树立一个新的衔接,形成无法作业。

看到这儿信任我们对ASCII文件与二进制文件有了个深化的了解吧!^-^


版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章