欢迎来到天天文库
浏览记录
ID:5334436
大小:149.93 KB
页数:4页
时间:2017-12-08
《在c语言中实现二进制格式数据输入输出的方法探讨》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、维普资讯http://www.cqvip.com2卜研莞珊发在‘C语言中实现二进制格式数据-.⋯⋯⋯-_.1._.¨_..-..‘__.1_.¨_._...__.._.._.⋯_..._._.I__..._⋯._I_.__.¨-._⋯_..__..1._.¨..⋯-.I._-....“......⋯_..__...'-I.__-_..__1..;输入输出的方法探讨强11(国家环境保护局标准样品研究所,北京100029)据的I/O,文件的读、写及空间效率显著提高。同时开发了几组关于二进制文件进行读写的..⋯关键词::筘、._针——技一一术,—进一制,1/o,c,c,子程序序(一’盛1,qt'童
2、龟I\,’弋铀1,U艇I’l1l■l引言表1基本数据类型众所周知,二进制格式数据存储方法具有最高数据类型字节长度有效位数数表示的范围的数据存储效率,是最常采用的数据存储形式,并有符号字符型12—127~+128且还具有一定的数据隐蔽性。对数据以二进制格无符号字符型120~255式存盘,可以极大地节省磁盘存储空间,而且当程有符号整数24~5—32768~+32767序读取这种格式数据时,不需要像读十进制数据那无符号整数24~50~65535样进行数据的格式转换,从而加速了软件的执行速有符号长整数49—2xl&~+2×109度。然而,在C语言编程环境中,没有直接提供对无符号长整数49O×109数
3、据进行二进制格式输入输出(I/O)的库函数,因单精度浮点数46~78.4xlO-~~3.3×10椭而给用户带来很多方便。一方面,我们不能像其他双精度浮点数8l5~l6}.2x10御~1.7×l0御高级语言一样,在二进制格式数据文件中直接读取数据到程序的数据变量中,于是无法直接使用其他码、规格化尾数。符号位,决定浮点数的正负。阶高级语言程序产生的二进制格式数据文件;另一方码,表示2的指数值,可以用带符号的补码表示,也面,C语言必然也不能把程序中的数据变量值以二可以用带偏移的移码表示,在这里采用的是偏移码进制格式存盘。为此,笔者在这方面作了一些技术表示。规格化尾数,用于存实数的有效数字,决定探讨
4、。浮点数类型所提供的数据精度。浮点数符合IEEE(InstituteofElectricalandElectronicsEngineers)浮2C语言基本数据类型的内部表示点标准。在C语言中,有8种基本的数据类型,分成三通过对当前多种PASCAL和BASIC二进制格大类:字符型、整型、浮点数,它们有不同的字节长式数据文件的分析研究发现,数据在磁盘中也是按度、有效位数和表示范围,如表1。图1的格式由低字节到高字节依次存放的,也就是图1是基本数据类型在内存中的存放格式。其说,与数据在内存中的存放形式完全一致。现中最左边的S是符号位,占用1个二进制位,“0”表3C语言存取二进制格式数据的方法代示正
5、数,“1”表示负数,负数采用标准的补码表示。对于无符号数,这一位作为数据的最高数据位。实C语言最大的特点是灵活性,特别是指针的巧计数一般采用浮点表示,由三个字段组成:符号位、阶妙使用更具有魅力。算机MODERNCOMPUTER维普资讯http://www.cqvip.com00H)作为字符串的结束标志,而在由数值转换成的字符型田豇二进制字节串中可能有多个0oH的字节。76O4子程序开发整型数巨=][二妇通过对第二和第三部分的讨论,并依据上述方15140法和原理,便可以对整型数、长整型数、单精度浮点数、双精度浮点数、暂时浮点数、结构和数组,写出长整型数]二二二二口它们相应的二进制格式数据的输入
6、输出子程序。31300(1)整数(INTJ的输入输出子程序1)整数的输出子程序单精度浮点效]二[二二困voidWritelnt(FILEfo,intn)3130230{registerchari;unsignedcharp;双精度浮点数E=】=蟊亘工二二二二二二二二]p=(unsignedchar)&n;6362520for(i=0;i7、dcharp【2];m¨,n;for(i=O;i<2;i++)unsignedcharpc,科3】=;fscanf(fp,"%c,p+i);i=24930;‘retum(int)p;pc=一b;}n=*(int.)pc;/*通过指针,把字符串强制转换成整数值(2)长整数(LONG)的输入输出子程序strnepy(p~,(char)&i’2);通过指针,把整数值强制转换1)长整数的输出子程序成字符串voidWr
7、dcharp【2];m¨,n;for(i=O;i<2;i++)unsignedcharpc,科3】=;fscanf(fp,"%c,p+i);i=24930;‘retum(int)p;pc=一b;}n=*(int.)pc;/*通过指针,把字符串强制转换成整数值(2)长整数(LONG)的输入输出子程序strnepy(p~,(char)&i’2);通过指针,把整数值强制转换1)长整数的输出子程序成字符串voidWr
此文档下载收益归作者所有