基于二进制文件的读写.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一些朋友总是咨询关于二进制文件的读写和转化。这里就我自己的理解说一说。 一).一般问题   二进制文件与我们通常使用的文本文件储存方式有根本的不同。这样的不同很难用言语表达,自己亲自看一看,理解起来会容易得多。因此,我推荐学习二进制文件读写的朋友安装一款十六进制编辑器。这样的编辑器有很多,在我们的?CVF?附带的集成开发环境下就可以(将二进制文件拖动到?IDE?窗口后松开)。Visual?Studio?2005?也是可以的。(不过需要在?File?菜单下?Open,File)   另外推荐一款使用较多的软件,叫做?UltraEdit(以下简称?UE)。是很不错的文本编辑器,也能做十六进制编辑器使用。   为什么要用十六进制编辑器?而不用?2?进制呢?因为?2?进制实在太小,书写起来会很长,很不直观。而我们的计算机把?8?位作为一个字节。刚好?2?**?8?=?256?=?16?**?2。用?8?位?2?进制表达的数,我们用?2?个十六进制数据来表达,更直观和方便。 二).文件格式   所有文件,笼统意义上将可以区分为两类,一类是文本文件,一类是二进制文件。 ?1).文本文件   文本文件用记事本等文本编辑器打开,我们可以看懂上面的信息。所以使用比较广泛。通常一个文本文件分为很多很多行,作为数据储存时,还有列的概念。实际上,储存在硬盘或其他介质上,文件内容是线一样储存的,列是用空格或?Tab?间隔,行是用回车和换行符间隔。   以?ANSI?编码(使用较多)的文本文件来说,例如我们储存如下信息: 引用: 10 11 12   需要的空间是:3?行?×?每行?2?个字符?+?2?个回车符?+?2?个换行符?=?10?字节。文本文件储存数据是有格式,无数据类型的。比如?10?这个数据,并不指定是整型还是实型还是字符串。它有长度,就是?2,两个字节。储存时计算机储存它的?ASCII?码:31h,30h。(十六进制表示)。回车符是:0Dh,换行符:0Ah。 ????因此,这个数据储存是这样的: 引用: 31?30?0D?0A?31?31?0D?0A?31?32   (红色为回车符和换行符)?31h?30h?就是?10,31h?31h?就是?11,31h?32h?就是?12。因此我们也可以认为文本文件是特殊的二进制文件。 ?2).二进制文件   二进制文件,是无格式有数据类型的。比如上面的?10?11?12?三个数。但二进制文件没有行的概念。我们要紧凑地储存他们。(当然也可以中间加入一些空白的字节)   从数据类型上来说,我们首先考虑整型。如果把?10?11?12?当作?2?字长的整型。则?10?表示为:0Ah?00h。因为?0Ah?对应十进制?10。而后面的?00h?是空白位。2?字长的整型如果不足?FFh,也就是不足?255,则需要一个空白位。类似的:11?表示为?0Bh?00h,12?表示为?0Ch?00h。   当整型数据超过?255?时,我们需要?2?个字节来储存。比如?2748(ABCh),则表示为:BCh?0Ah。要把低位写在前面(BCh),高位写在后面(0Ah)。   当整型数据超过?65535?时,我们就需要?4?个字节来储存。比如?439041101(1A2B3C4Dh),则表示成:4Dh?3Ch?2Bh?1Ah。当数据再大时,我们就需要?8?字节储存了。   二进制文件的实型数据也有字节长度的区分,比如?4?字长,8?字长。但实型数据的长度并不仅仅代表它的表达的范围,更多的代表精度。所以,8?字长的我们又称为双精度。关于实型数据如何储存为?2?进制。则有很多套规则。现在都广泛使用的是?IEEE?标准浮点格式。关于这样的规则,我还正在了解,比较麻烦。就不多说了。在这里也没有必要了解。   二进制文件也可以储存字符型数据,储存方法和文本文件一样。都是使用?ASCII?编码储存的。所以我们用记事本打开某些二进制文件时,也能看到一些有意义的字符串。(无意义的乱码我们可以认为是整型或实型,不过记事本程序当作字符来解释,因此造成了乱码) 三).使用二进制文件的好处   为什么要使用二进制文件。原因大概有三个:   第一是二进制文件比较节约空间,这两者储存字符型数据时并没有差别。但是在储存数字,特别是实型数字时,二进制更节省空间,比如储存?Real*4?的数据:3.1415927,文本文件需要?9?个字节,分别储存:3?.?1?4?1?5?9?2?7?这?9?个?ASCII?值,而二进制文件只需要?4?个字节(DB?0F?49?40)   第二个原因是,内存中参加计算的数据都是用二进制无格式储存起来的,因此,使用二进制储存到文件就更快捷。如果储存为文本文件,则需要一个转换的过程。在数据量很大的时候,两者就会有明显的

文档评论(0)

xiaofei2001129 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档