二进制文件文本文件和二进制数据

我们知道计算机是用二进制来做运算处理的,所以所有存储在计算机里面的东西都是二进制的。

我也知道这句话,但为什么总是听到别人说”二进制“文件和”文本“文件呢? 按照上面那句话来说计算机里面的都应该是二进制的啊!

底层存储的都是二进制的”数据“,而不是二进制的文件。

列举一个二进制文件如下:

00000000h:0F 01 00 00 0F 03 00 00 12 53 21 45 58 62 35 34; .........S!EXb54

00000010h:41 42 43 44 45 46 47 48 49 47 4B 4C 4D 4E 4F 50; ABCDEFGHIGKLMNOP

以前我看到这个二进制文件的时候我彻底的迷茫了,二进制不是应该像下面列出的样子吗?

而在底层存放的二进制数据应该是这样的:

00000000 00000001 10001010 11011101

硬盘里面存放的应该都属于”数据“范畴。我们平时说的这个文件那个文件是站在操作系统层面上的。

下面我们再解释一下二进制文件和文本文件的区别:

将文件看作是由一个一个字节(byte)组成的,那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就是两者的区别。文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理也就不同。如果按照文本方式打开,在打开的时候会进行translate,将每个字节转换成ASCII码,而以按照二进制方式打开的话,则不会进行任何的translate;最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。譬如,你在记事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。

通过以上的描述我们应该知道二进制文件是什么意思了吧!

以上内容均是个人理解总结,如有不对的地方请指出。

时间: 2024-08-07 01:27:21

二进制文件文本文件和二进制数据的相关文章

数据库中用varbinary存储二进制数据

问题描述:将图片.二进制文件内容等数据存储在数据库中,并能从数据库中取出还原为图片或文件,数据库存储二进制数据用varbinary字段. 分析:由于之前数据库中没有用过varbinary存储数据,首先要把varbinary搞懂了,其次就是图片类型与二进制类型之间的转换,文件类型与二进制类型之间的转换. 准备工作:     1.varbinary 与 binary的区别:             固定长度 (binary) 的或可变长度 (varbinary) 的 binary 数据类型.    

BLOB存储图片文件二进制数据是非对错

子在一天一天虚度,生活也在一天一天中茫然 做人做事哪能尽如人意,付出多少收获多少虽然存在偏颇,但是不劳而获的心态是万万不对的,更不能去怨天尤人,低调为人.做好自己就可以了 改进你的系统的最好的方法是先避免做“蠢事”.我并不是说你或你开发的东西“蠢”,只是有些决定很容易被人们忽略掉其暗含的牵连,认识不到这样做对 系统维护尤其是系统升级带来多大的麻烦.作为一个顾问,像这样的事情我到处都能见到,我还从来没有见过做出这样的决定的人有过好的结果的. 图片,文件,二进制数据 既然数据库支持 BLOB 类型的

SVN文本文件报二进制属性的问题

2011-11-21 00:42 svn总出现二进制相关的烦人事 在使用svn add 时提示: A  (bin)  templates/translate/screen/selectTransLang.vm 请看官方文档的解释: 当你第一次添加或者导入文件到Subversion中时,Subversion会检测该文件是否是二进制文件.目前,Subversion的策略是只检测文件的前1024个字节:如果所有字节都是0,或者超过15%都是非ASCII码输出字符的话,那么Subversion就认定该文

Base64就是一种 基于64个可打印字符来表示二进制数据的表示方法

Base64编码是从二进制到字符的过程. Base64编码主要用在传输.存储.表示二进制等领域,还可以用来加密,但是这种加密比较简单. byte[] byteArray = Encoding.UTF8.GetBytes(content);content = Convert.ToBase64String(byteArray); 开发者对 Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了.实际 上Base64已经简单到不能再简单了,如果对它的理解还是模棱两可实在不应该.大概介绍一下Bas

巧用AWK处理二进制数据文件

AWK是Unix下的一款功能强大的文本格式化和抽取工具.利用这个工具,可以对复杂的文本文件进行整理,提取其中的全部或者部分数据,按照需要的格式予以显示.需要说明的是,AWK的强大功能只针对纯文本文件.对于带有很多不可显示字符的二进制数据文件,单凭AWK就无能为力了.这时我们需要其他工具的帮助. 在Unix下,还有一个工具叫做OD,其全称是“display files in octal format”,也就是说它能将各种文件以8进制的方式显示出来.如果设置不同的选项,它还能将文件以16进制方式显示

二进制数据和字符串之间转换

1.把二进制数据编码为base64格式 你有一个byte[]用于表示一些二进制信息,比如图像,你需要把这些数据编码为一个字符串,以便可以通过不适合二进制的方式(比如电子邮件)发送它. 可以使用Convert类的静态方法Convert.ToBase64String,把byte[]编码为string public static string Base64EncodeBytes(this byte[] inputBytes) { return Convert.ToBase64String(inputB

atitit.二进制数据无损转字符串网络传输

1. gbk的网络传输问题,为什么gbk不能使用来传输二进制数据 1 2. base64 2 3. iso-8859-1  (推荐) 2 4. utf-8 (不能使用) 2 1. gbk的网络传输问题,为什么gbk不能使用来传输二进制数据 gbk会造成信息丢失 由于有些字符在gbk字符集中找不到对应的字符,所以默认使用编码63代替,也就是?(问号)...gbk仅仅能兼容低位asc编码(英文字母),高位编码要使用来编码汉字了... 作者::老哇的爪子Attilax艾龙,EMAIL:[email p

QT: QByteArray储存二进制数据(包括结构体,自定义QT对象)

因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 1. 利用memcpy拷贝内存数据 //自定义person结构体 Cpp代码   typedef struct { int age; char name[20]; }Person; //向QByteArray写入多个结构体 void writeStruct() { QByteArray ba; ba.resize(2*sizeof(Pers

JavaScript二进制数据序列化和反序列化

最近业余时间在搞h5小游戏,由于同步协议过于频繁,和服务器之间的同步直接用json就显得太浪费了,于是我们商讨之下决定改用二进制.学习过程中并没有遇到一篇就解决问题的文章,遂再总结一发. 1.二进制数据的存储 ArrayBuffer对象.TypedArray对象.DataView对象是JavaScript操作二进制数据的一个接口. (1)ArrayBuffer对象:代表内存之中的一段二进制数据,它不能直接读写,只能通过视图(TypedArray视图和DataView视图)来读写,视图的作用是以指