关于文本文件与二进制文件的介绍

关于文本文件与二进制文件的介绍
关于文本文件与二进制文件的介绍

网上关于文本文件与二进制文件的文章很多,但遗憾的是,这些文章讲得都比较散。下面我将结合所查到的资料,从多个角度谈谈文本文件与二进制文件。

一、文本文件与二进制文件的定义

大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区

别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。

简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,

UNICOD

E编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么

意思(这样一个过程,可以看作是自定义编码)。

从上面可以看出文本文件基本上是定长编码的,基于字符嘛,每个字符在具体编

码中是固定的,ASCII码是8个比特的编码,UNICODE一般占16个比特。而二

进制文件可看

成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。大

家可能

对BMP文件比较熟悉,就拿它举例子吧,其头部是较为固定长鹊奈募 放息,?

字节

用来记录文件为BMP格式,接下来的8个字节用来记录文件长度,再接下来的

4字节用来记

录bmp文件头的长度。。。大家可以看出来了吧,其编码是基于值的(不定长

的,2、4、

8字节长的值都有),所以BMP是二进制文件。

二、文本文件与二进制文件的存取

文本工具打开一个文件的过程是怎样的呢?拿记事本来说,它首先读取文件物理

上所对应的二进制比特流(前面已经说了,存储都是二进制的),然后按照你所

选择的

解码方式来解释这个流,然后将解释结果显示出来。一般来说,你选取的解码方

式会是

ASCII码形式(ASCII码的一个字符是8个比特),接下来,它8个比特8个比特地来解释

这个文件流。例如对于这么一个文件流

"01000000_01000001_01000010_01000011"(下划

线''_'',是我为了增强可读性,而手动添加的),第一个8比特''01000000''按ASCII 码来解

码的话,所对应的字符是字符''A'',同理其它3个8比特可分别解码为''BCD'',即这个文件

流可解释成“ABCD”,然后记事本就将这个“ABCD”显示在屏幕上。

事实上,世界上任何东西要与其他东西通信会话,都存在一个既定的协议,既

定的编码。人与人之间通过文字联络,汉字“妈”代表生你的那个人,这就是一种既定

的编码。但注意到这样一种情况,汉字“妈”在日本文字里有可能是你生下的那个人,

所以当一个中国人A与日本B之间用“妈”这个字进行交流,出现误解就很正常的。用

记事本打开二进制文件与上面的情况类似。记事本无论打开什么文件都按既定的字符编

码工作(如ASCII码),所以当他打开二进制文件时,出现乱码也是很必然的一件事情了

,解码和译码不对应嘛。例如文件流''00000000_00000000_00000000_00000001''可能在二

进制文件中对应的是一个四字节的整数int 1,在记事本里解释就变成了"NULL_NULL_NU

LL_SOH"这四个控制符。

文本文件的存储与其读取基本上是个逆过程,不再累述。而二进制文件的存取显然

与文本文件的存取差不多,只是编/解码方式不同而已,也不再叙述。

三、文本文件与二进制文件的优缺点

因为文本文件与二进制文件的区别仅仅是编码上不同,所以他们的优缺点就是编码

的优缺点,这个找本编码的书来看看就比较清楚了。一般认为,文本文件编码基于字符

定长,译码容易些;二进制文件编码是变长的,所以它灵活,存储利用率要高些,译码

难一些(不同的二进制文件格式,有不同的译码方式)。关于空间利用率,想想看,二

进制文件甚至可以用一个比特来代表一个意思(位操作),而文本文件任何一个意思至少

是一个字符.

很多书上还认为,文本文件的可读性要好些,存储要花费转换时间(读写要编译码)

,而二进制文件可读性差,存储不存在转换时间(读写不要编解码,直接写值).这里

的可读性是从软件使用者角度来说的,因为我们用通用的记事本工具就几乎可以浏览所

有文本文件,所以说文本文件可读性好;而读写一个具体的二进制文件需要一个具体的

文件解码器,所以说二进制文件可读性差,比如读BMP文件,必须用读图软件.而这里的

存储转换时间应该是从编程的角度来说的,因为有些操作系统如windows需要对回车换行

符进行转换(将''\n'',换成''\r\n'',所以文件读写时,操作系统需要一个一个字符的检查

当前字符是不是''\n''或''\r\n'').这个在存储转换在Linux操作系统中并不需要,当然,当

在两个不同的操作系统上共享文件时,这种存储转换又可能出来(如Linux系统和Window

s系统共享文本文件)。关于这个转换怎样进行,我将在下一篇文章《Linux文本文件与W

indows文本文件间的转换》给出^_^

四、C的文本读写和二进制读写

应该说C的文本读写与二进制的读写是一个编程层次上的问题,与具体的操作系统

有关,所以"用文本方式读写的文件一定是文本文件,用二进制读写的文件一定是二进

制文件"这类观点是错误的.下面的讲述非明确指出操作系统类型,都暗指windows.

C的文本方读写与二进制读写的差别仅仅体现在回车换行符的处理上.文本方式写

时,每遇到一个''\n''(0AH换行符),它将其换成''\r\n''(0D0AH,回车换行),然后再写入

文件;当文本读取时,它每遇到一个''\r\n''将其反变化为''\n'',然后送到读缓冲区.正因为文本方式有''\n''--''\r\n''之间的转换,其存在转换耗时.二进制读写时,其不存

在任何转换,直接将写缓冲区中数据写入文件.

总地来说,从编程的角度来说,C中文本或二进制读写都是缓冲区与文件中二进

制流的交互,只是文本读写时有回车换行的转换.所以当写缓冲区中无换行符''\n''(0AH

),文本写与二进制写的结果是一样的,同理,当文件中不存在''\r\n''(0DH0AH)时,文本

读与二进制读的结果一样.

下面给出一个小程序来证明前面的观点.

1、编写如下程序.该程序将字符串"12\n3"分别以文本方式和二进制方式写入test1和t

est2,然后再以文本方式

读test1,以二进制方式读test2.

#include

int main()

{

FILE * fp_text,* fp_binary;

char write_buf[4]={''1'',''2'',''\n'',''3''};

char read_buf_text[6],read_buf_binary[6];

int read_count_text,read_count_binary;

//未检测打开是否失败

fp_text=fopen("test1","wt+");

fp_binary=fopen("test2","wb+");

fwrite(write_buf,4,1,fp_text);

fwrite(write_buf,4,1,fp_binary);

//fflush(fp_text);

//fflush(fp_binary);

fseek(fp_text,0L,SEEK_SET);//fseek附带了fflush功能

fseek(fp_binary,0L,SEEK_SET);//

read_count_text=fread(read_buf_text,sizeof(char),5,fp_text);

read_count_binary=fread(read_buf_binary,sizeof(char),5,fp_binary);

//加''\0'',便于打印字符串

read_buf_text[read_count_text]=''\0'';

read_buf_binary[read_count_binary]=''\0'';

printf("In Text Mode:read_count=%d,string=%s\n",read_count_text,read_buf _text);

printf("In Binary Mode:read_count=%d,string=%s\n",read_count_binary,read _buf_binary);

fclose(fp_text);

fclose(fp_binary);

}

2、该程序在VC6.0下编译运行,显示结果如下(追忆"\\"及其右边内容是我手动加的注释

):

In Text Mode:read_count=4,string=12

3 //文本方式读test1,读到的字符与原先写入test1的

字符一样

In Binary Mode:read_count=4,string=12

3 //二进制方式读test1,读到的字符与原先写入test1

的字符一样

3.用记事本打开test1和test2,结果如下:

test1的内容:

12

3 //文本方式写入的,有换行效果,参看下面的4

test2的内容

123 //二进制方式写入的,

无换行效果(记事本对"\r\n"之外的控制字符串无

显示效果),参看下面的4

4、用vc6.0以Binary方式(二进制方式)打开test1和test2,结果如下(用其他二进制读

写软件也可以)

test1的内容

31 32 0D 0A 33//十六进制,5个字节,比写入缓冲区多了一个字节,在''\n''(0AH)前

插了一个''\r''(0DH)

31 32 0A 33//十六进制,4个字节,与写入缓冲区的值一致.

5、总结

从4可以看出,文本方式写时,存在''\n''->''\r\n''的转换,而二进制方式无转换.又从2和4可以推出,文本方式读时存在''\r\n''->至''\n''的转换,而二进制方式无转换.

有兴趣的读者可以,以二进制方式读test1或以文本方式读test2,看会出现什么效果

6.补充说明

上述说明仅适用于windows,在linux中文本方式的读写与二进制方式的读写无差

别,不存在回车换行间的转换.这样当直接在windows和linux中共享文件时,将会出现

与回车换行相关的问题.下一篇文章《Linux文本文件与Windows文本文件间的转换》将

给出Linux文本文件与Windows文本文件间转换的C程序,敬请关注^_^ fstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;

在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:

1、插入器(<<)

向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<'\n';就表示把字符串"Write Stdout"和换行字符('\n')输出到标准输出流。

2、析取器(>>)

从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。

在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。

一、打开文件

在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:

void open(const char* filename,int mode,int access);

参数:

filename:要打开的文件名

mode:要打开文件的方式

access:打开文件的属性

打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下:

ios::app:以追加的方式打开文件

ios::ate:文件打开后定位到文件尾,ios:app就包含有此属性

ios::binary:以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文ios::in:文件以输入方式打开(文件数据输入到内存)

ios::out:文件以输出方式打开(内存数据输出到文件)

ios::nocreate:不建立文件,所以文件不存在时打开失败

ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败

ios::trunc:如果文件存在,把文件长度设为0

可以用“或”把以上属性连接起来,如ios::out|ios::binary

打开文件的属性取值是:

0:普通文件,打开访问

1:只读文件

2:隐含文件

4:系统文件

可以用“或”或者“+”把以上属性连接起来,如3或1|2就是以只读和隐含属性打开文件。

例如:以二进制输入方式打开文件c:\config.sys

fstream file1;

file1.open("c:\\config.sys",ios::binary|ios::in,0);

如果open函数只有文件名一个参数,则是以读/写普通文件打开,即:

file1.open("c:\\config.sys"); <=> file1.open("c:\\config.sys",ios::in|ios::out,0);

另外,fstream还有和open()一样的构造函数,对于上例,在定义的时侯就可以打开文件了:fstream file1("c:\\config.sys");

特别提出的是,fstream有两个子类:ifstream(input file stream)和ofstream(outpu file stream),ifstream默认以输入方式打开文件,而ofstream默认以输出方式打开文件。

ifstream file2("c:\\pdos.def");//以输入方式打开文件

ofstream file3("c:\\x.123");//以输出方式打开文件

所以,在实际应用中,根据需要的不同,选择不同的类来定义:如果想以输入方式打开,就用ifstream来定义;如果想以输出方式打开,就用ofstream来定义;如果想以输入/输出方式来打开,就用fstream来定义。

二、关闭文件

打开的文件使用完成后一定要关闭,fstream提供了成员函数close()来完成此操作,如:file1.close();就把file1相连的文件关闭。

三、读写文件

读写文件分为文本文件和二进制文件的读取,对于文本文件的读取比较简单,用插入器和析取器就可以了;而对于二进制的读取就要复杂些,下要就详细的介绍这两种方式

1、文本文件的读写

文本文件的读写很简单:用插入器(<<)向文件输出;用析取器(>>)从文件输入。假设file1是以输入方式打开,file2以输出打开。示例如下:

file2<<"I Love You";//向文件写入字符串"I Love You"

int i;

file1>>i;//从文件输入一个整数值。

这种方式还有一种简单的格式化能力,比如可以指定输出为16进制等等,具体的格式有以下一些

操纵符功能输入/输出

dec 格式化为十进制数值数据输入和输出

endl 输出一个换行符并刷新此流输出

ends 输出一个空字符输出

hex 格式化为十六进制数值数据输入和输出

oct 格式化为八进制数值数据输入和输出

setpxecision(int p) 设置浮点数的精度位数输出

比如要把123当作十六进制输出:file1<

file1<

2、二进制文件的读写

①put()

put()函数向流写入一个字符,其原型是ofstream &put(char ch),使用也比较简单,如file1.put('c');就是向流写一个字符'c'。

②get()

get()函数比较灵活,有3种常用的重载形式:

一种就是和put()对应的形式:ifstream &get(char &ch);功能是从流中读取一个字符,结果保存在引用ch中,如果到文件尾,返回空字符。如file2.get(x);表示从文件中读取一个字符,并把读取的字符保存在x中。

另一种重载形式的原型是:int get();这种形式是从流中返回一个字符,如果到达文件尾,返回EOF,如x=file2.get();和上例功能是一样的。

还有一种形式的原型是:ifstream &get(char *buf,int num,char delim='\n');这种形式把字符读入由buf 指向的数组,直到读入了num 个字符或遇到了由delim 指定的字符,如果没使用delim 这个参数,将使用缺省值换行符'\n'。例如:

file2.get(str1,127,'A'); //从文件中读取字符到字符串str1,当遇到字符'A'或读取了127个字符时终止。

③读写数据块

要读写二进制数据块,使用成员函数read()和write()成员函数,它们原型如下:

read(unsigned char *buf,int num);

write(const unsigned char *buf,int num);

read()从文件中读取num 个字符到buf 指向的缓存中,如果在还未读入num 个字符时就到了文件尾,可以用成员函数int gcount();来取得实际读取的字符数;而write() 从buf 指向的缓存写num 个字符到文件中,值得注意的是缓存的类型是unsigned char *,有时可能需要类型转换。

例:

unsigned char str1[]="I Love You";

int n[5];

ifstream in("xxx.xxx");

ofstream out("yyy.yyy");

out.write(str1,strlen(str1));//把字符串str1全部写到yyy.yyy中

in.read((unsigned char*)n,sizeof(n));//从xxx.xxx中读取指定个整数,注意类型转换

in.close();out.close();

四、检测EOF

成员函数eof()用来检测是否到达文件尾,如果到达文件尾返回非0值,否则返回0。原型是int eof();例:if(in.eof()) ShowMessage("已经到达文件尾!");

五、文件定位

和C的文件操作方式不同的是,C++ I/O系统管理两个与一个文件相联系的指针。一个是读指针,它说明输入操作在文件中的位置;另一个是写指针,它下次写操作的位置。每次执行输入或输出时,相应的指针自动变化。所以,C++的文件定位分为读位置和写位置的定位,对应的成员函数是seekg()和seekp()。seekg()是设置读位置,seekp是设置写位置。它们最通用的形式如下:istream &seekg(streamoff offset,seek_dir origin);

ostream &seekp(streamoff offset,seek_dir origin);

streamoff定义于iostream.h 中,定义有偏移量offset 所能取得的最大值,seek_dir 表示移动的基准位置,是一个有以下值的枚举:

ios::beg:文件开头

ios::cur:文件当前位置

ios::end:文件结尾

这两个函数一般用于二进制文件,因为文本文件会因为系统对字符的解释而可能与预想的值不同。例:

file1.seekg(1234,ios::cur); //把文件的读指针从当前位置向后移1234个字节

file2.seekp(1234,ios::beg); //把文件的写指针从文件开头向后移1234个字节

关于二进制文件读写的详细解说

先介绍函数,我们一共要用到三个函数,fopen,fread,fwrite。二进制读写的顺序是用fopen以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件中。下面我们看看一个拷贝程序的源码:

2中,注意fread的返回值,这个值需要在fwrite的时候将会用到。 后面是关于fopen,fread,fwrite三个函数的详细说明。 fopen(打开文件) 相关函数open,fclose 表头文件#include 定义函数FILE * fopen(const char * path,const char * mode); 函数说明参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。 mode有下列几种形态字符串: r 打开只读文件,该文件必须存在。 r+ 打开可读写的文件,该文件必须存在。 w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会 消失。若文件不存在则建立该文件。 w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内 容会消失。若文件不存在则建立该文件。 a 以附加的方式打开只写文件。若文件不存在,则会建立该文件, 如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会 被保留。 a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文 件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的 内容会被保留。

上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等 组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非 纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由 fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_I WGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考um ask值。 返回值文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中。 附加说明一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误 判断及处理。 范例#include main() { FILE * fp; fp=fopen("noexist","a+"); if(fp= =NULL) return; fclose(fp); } fread(从文件流读取数据) 相关函数fopen,fwrite,fseek,fscanf 表头文件#include 定义函数size_t fread(void * ptr,size_t size,size_t nmemb,FILE * strea m); 函数说明fread()用来从文件流中读取数据。参数stream为已打开的文件指针,参数ptr 指向欲存放读取进来的数据空间,读取的字符数以参 数size*nmemb来决定。Fread()会返回实际读取到的nmemb数目, 如果此值比参数nmemb 来得小,则代表可能读到了文件尾或有错 误发生,这时必须用feof()或ferror()来决定发生什么情况。 返回值返回实际读取到的nmemb数目。 附加说明 范例#include #define nmemb 3 struct test { char name[20]; int size; }s[nmemb]; main() { FILE * stream; int i;

使用文本文件 txt 进行数据存取的技巧总结 相当

使用文本文件txt 进行数据存取的技 巧总结相当 使用文本文件(.txt)进行数据存取的技巧总结 由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用"--转--"标注,原作者略去,在此对所有原作者表示感谢! 特别说明:由于大家在I/O存取上以txt文件为主,且读取比存储更麻烦(存储的话fwrite,fprintf基本够用),因此下面的讨论主要集中在"txt文件 的读取"上。除了标注了"转"之外,其余心得均出于本人经验之结果,欢迎大家指正、补充。 一.基本知识: --转-- 1.二进制文件与文本文件的区别: 将文件看作是由一个一个字节(byte)组成的,那么文本文件中的每个字节 的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就是两者的区别;接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是 打开方式不同,对于这些0和1的处理也就不同。如果按照文本方式打开,在 打开的时候会进行translate,将每个字节转换成ASCII码,而以按照二进制 方式打开的话,则不会进行任何的translate;最后就是文本文件和二进制文 件在编辑的时候,使用的方式也是不同的。譬如,你在记事本中进行文本编辑 的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种:

四选一、四位比较器、加法器、计数器、巴克码发生器、七人表决器

EDA实验报告 姓名: 学号: 班级:

实验14选1数据选择器的设计 一、实验目的 1.学习EDA软件的基本操作。 2.学习使用原理图进行设计输入。 3.初步掌握器件设计输入、编译、仿真和编程的过程。 4.学习实验开发系统的使用方法。 二、实验仪器与器材 1.EDA开发软件一套 2.微机一台 3.实验开发系统一台 4.打印机一台 三、实验说明 本实验通过使用基本门电路完成4选1数据选择器的设计,初步掌握EDA设计方法中的设计输入、编译、综合、仿真和编程的过程。实验结果可通过实验开发系统验证,在实验开发系统上选择高、低电平开关作为输入,选择发光二极管显示输出电平值。 本实验使用Quartus II 软件作为设计工具,要求熟悉Quartus II 软件的使用环境和基本操作,如设计输入、编译和适配的过程等。 实验中的设计文件要求用原理图方法输入,实验时,注意原理图编辑器的使用方法。例如,元件、连线、网络名的放置方法和放大、缩小、存盘、退出等命令的使用。学会管脚锁定以及编程下载的方法等。 四、实验要求 1.完成4选1数据选择器的原理图输入并进行编译; 2.对设计的电路进行仿真验证; 3.编程下载并在实验开发系统上验证设计结果。 五、实验结果 4选1数据选择器的原理图: 仿真波形图:

管脚分配:

实验2 四位比较器 一、实验目的 1.设计四位二进制码比较器,并在实验开发系统上验证。 2.学习层次化设计方法。 二、实验仪器与器材 1.EDA 开发软件 一套 2.微机 一台 3.实验开发系统 一台 4.打印机 一台 5.其它器件与材料 若干 三、实验说明 本实验实现两个4位二进制码的比较器,输入为两个4位二进制码0123A A A A 和 0123B B B B ,输出为M (A=B ),G (A>B )和L (A

4位数值比较器设计

电了技术课程设计报告题目: 4 位数值比较器设计 学生姓名: 学生学号: 年级: 专业: 班级: 指导教师:

机械与电气工程学院制 2016年11月 4位数值比较器设计 机械与电气工程学院:自动化专业 1.课程设计的任务与要求 1.1课程设计的任务 采用Multisim 12.0 软件实现4位数值比较器的设计与仿真。 1.2课程设计的要求 (1)设计一个4位数值比较器的电路,对两个4位二进制进行比较。 (2)采用74LS85集成数值比较器。 (3)要有仿真效果及现象或数据分析。 2.四位数值比较器设计方案制定 2.1 四位数值比较器工作的原理 对两个4位二进制数A3A2A1A(与B3B2B1B(进行比较。从A的最高位A3和 B的最高位B3进行比较,如果他们不相等,则该位的比较结果可以作为两数的比较结果。若最高位A3=B3则再比较次高位A2=B2余此类推。如果两数相等,那么,必须将进行到最低位才能得到结果。可以知道: FA>B=FA3>B3+FA3=B3FA2>B2+FA3=B3FA2=B2FA1>B1+FA3=B3FA2=B2FA1=B2FA0 >B0+F A3=B3FA2=B2FA仁B1FA0=B0IA>B (2-1) FAB、IAB、IAvB、IA=B进行适当处理,IA>B=IA

二进制文件的读写以及相关心得

二进制文件读写分析 有关TXT文件以及bin文件处理的测试代码 int main() { //fstream file("D:\\test.dat",ios_base::in|ios_base::out|ios_base::app); fstream file; file.open("D:\\test1.dat",ios_base::out); { int temp[10] = {0x11,0x13,0x14,0x1F,0x1D,0x11,0x11,0x12,0x11,0x11}; int temp1[10]; file.write((char *)temp,sizeof(temp)); file.close(); file.open("D:\\test1.dat",ios_base::in); file.read((char *)temp,sizeof(temp)); unsigned int i; cout<

2位二进制数据比较器实验报告

2位二进制数据比较器实验报告 一 实验目的? 1.熟悉Quartus II 软件的基本操作 2.学习使用Verilog HDL 进行设计输入 3.逐步掌握软件输入、编译、仿真的过程 二 实验说明? 输入信号 输出信号 A1 A0 B1 B0 EQ LG SM 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 1 逻辑表达式: 三 实验要求? 1、完成2位二进制数据比较器的Verilog HDL 程序代码输入并进行仿真 2、采用结构描述方式和数据流描述方式 3、完成对设计电路的仿真验证 A1 A0 EQ B1 comp_2 LG B0 SM 本次实验是要设计一个2位的二进制数据比较器。该电路应有两个数据输入端口A 、B ,每个端口的数据宽度为2 ,分别设为A0、A1和B0、B1、A0、B0为数据低位, 、B1为数据高位。电路的输出端口分别为EQ (A=B 的输出信号)、LG (A>B 时的输出信号)和SM (A

四、实验过程 1 程序代码 (1) module yangying(A,B,EQ,LG,SM); input [1:0]A,B; output EQ,LG,SM; assign EQ=(A==B)1'b1:1'b0; assign LG=(A>B)1'b1:1'b0; assign SM=(AB) begin EQ<=1'b1; LG<=1'b0; SM<=1'b0; end else begin EQ<=1'b0; LG<=1'b0; SM<=1'b1; end end endmodule 2 仿真结果 五、实验体会 通过2位二进制数据比较器的设计,使我们更加熟悉Quartus 软件进行数字系统设计的步骤,以及运用Verilog HDL进行设计输入,并掌握2位二进制数据比较器的逻辑功能和设计原理,逐步理解功能仿真和时序仿真波形。

C++中Txt文件读取和写入

C++中Txt文件读取和写入 标签:c++nullstringios文本编辑file 2012-10-07 16:58 45182人阅读评论(3) 收藏举报 分类: C/C++基础(75) C++中Txt文件读取和写入 一、ASCII 输出 为了使用下面的方法, 你必须包含头文件(译者注:在标准C++中,已经使用 取代< fstream.h>,所有的C++标准头文件都是无后缀的。)。这是的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, 已经被包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。如果你猜是"fstream," 恭喜你答对了!但这篇文章介绍的方法,我们分别使用"ifstream"?和"ofstream" 来作输入输出。 如果你用过标准控制台流"cin"?和"cout," 那现在的事情对你来说很简单。我们现在开始讲输出部分,首先声明一个类对象。 ofstream fout; 这就可以了,不过你要打开一个文件的话, 必须像这样调用ofstream::open()。 fout.open("output.txt"); 你也可以把文件名作为构造参数来打开一个文件. ofstream fout("output.txt"); 这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在,它会为你创建一个, 所以不用担心文件创建的问题. 现在就输出到文件,看起来和"cout"的操作很像。对不了解控制台输出"cout"的人, 这里有个例子。 int num = 150; char name[] = "John Doe"; fout << "Here is a number: " << num << "/n"; fout << "Now here is a string: " << name << "/n"; 现在保存文件,你必须关闭文件,或者回写文件缓冲. 文件关闭之后就不能再操作了, 所以只有在你不再操作这个文件的时候才调用它,它会自动保存文件。回写缓冲区会在保持文件打开的情况下保存文件, 所以只要有必要就使用它。 回写看起来像另一次输出, 然后调用方法关闭。像这样:

位数值比较器设计

令狐采学创作 电子技术课程设计报告 令狐采学 题目:4位数值比较器设计 学生姓名: 学生学号: 年级: 专业: 班级: 指导教师: 机械与电气工程学院制 2016年11月 4位数值比较器设计 机械与电气工程学院:自动化专业 1.课程设计的任务与要求 1.1 课程设计的任务 采用Multisim 12.0软件实现4位数值比较器的设计与仿真。 1.2 课程设计的要求 (1)设计一个4位数值比较器的电路,对两个4位二进制进行比较。 (2)采用74Ls85集成数值比较器。

(3)要有仿真效果及现象或数据分析。 2.四位数值比较器设计方案制定 2.1 四位数值比较器工作的原理 对两个4位二进制数A3A2A1A0与B3B2B1B0进行比较。从A的最高位A3和B的最高位B3进行比较,如果他们不相等,则该位的比较结果可以作为两数的比较结果。若最高位A3=B3,则再比较次高位A2=B2,余此类推。如果两数相等,那么,必须将进行到最低位才能得到结果。可以知道:FA>B=FA3>B3+FA3=B3FA2>B2+FA3=B3FA2=B2FA1>B1 +FA3=B3FA2=B2FA1=B2FA0>B0+FA3=B3FA2=B2FA1=B1 FA0=B0IA>B (2-1) FAB、IAB、IAB=IA

解码labview读写二进制文件格式

解码labview读写二进制文件格式 一直觉得NI 很恶心,最近越发觉得恶心,竟知道骗钱,我花了2 周去探它该死的数据格式,问他们售后居然说不知道...还得我亲自动手...现在把数据格式写下来,为大家做点贡献吧...关于用matlab/vc 读二进制文件write to binary file 的数据NI 可以直接用这个函数把数据写下来,但是读取格式不告诉你,要你用它的软 件去读...读的方法:1) 用uchar 去读,将数据转置存储;2)用浮点去读,倒序;-------- 这些在网上可以查到,下面才是关键.... 对64 位数据:3)每个通道有21 个数据是头文件,即21*64bit 的头信息,可以不去管它,跳过; 4)除了头文件外,每个通道还有1-3 个字节的信息(不知道什么玩意儿),要跳过;具体来讲是这样,如果有6 个通道, 第一个通道存储了1 个字节,要扣除;第2,4,5 个通道多了2 个字节,要扣除;第3,6 通道多了3 个字节要扣除.但是必须从3 开始扣.即假如总共N 字节数据,则第一个通道读N-3 个,接下来2,4,5 要读N-4 个,剩下的3,6 要读N-5 个.只有这样才能正确的读取.不过要注意数据倒序的问题,实际的数据可能正好通道顺序相反.5) 剩下的就是编程的问题了,还有很多细节大家可以自己解决,再看怎么要内存最小,耗时最短...我是没有在NI 的说明文档里面找对相关的数据存储格式,这里是 6 个通道的举例,要是5 个通道又得慢慢试了...再来一句,NI 真恶心,其实没必要 保留数据格式...搞的人家都要用它的软件...tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

二进制文件和文本文件的详细以及如何生成二进制文件-推荐下载

二进制文件和文本文件的详细以及如何生成二进制文件? 技术随笔 2010-05-01 19:13:56 阅读226 评论0 字号:大中小订阅 这个问题一直困扰了很多年,可能是我没有认真的去思考。我相信很多人可能和我一样很纠葛,到底编译器也好,汇编器也好是如何工作的呢?到底怎么回事?为什么会运行呢?这是让我们这些看着windows 学习电脑的人真的很难去理解计算机的内部结构。其实,这一切都只是障眼法,下面我就来给大家细细说说我对计算机的理解。 解答1:编译器是怎么回事? 所谓编译器,顾名思义就是将一种文本格式转换成另一种文本格式。比如将字符串echo "hello"; 转换成printf("hello"); 这其实是php语言转成c语言的一种表示。这只是一种简单的描述,其实很大一部分的编译器是将源语言转换成了汇编语言。下面我们来看看 C 语言中的经典hello word,通过gcc编译后生成的汇编是怎么回事。 c语言源码: #include int main() { printf("hello world\n"); } 通过编译器后,编译器把这个翻译成了另一套字符串,其实就是汇编语言: .file "hello.c" .section .rodata .LC0: .string "hello world" .text .globl main .type main, @function main: leal 4(%esp), %ecx andl $-16,%esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $4, %esp movl $.LC0, (%esp) call puts addl $4, %esp popl %ecx popl %ebp leal -4(%ecx), %esp ret .size main, .-main .ident "GCC: (GNU) 4.1.2"

数字电路二位数值比较器

数字电子技术基础 课程设计报告书 题目:2位数值比较器 姓名: 班级: 指导教师: 设计时间:2011年3月— 7月 民族大学数学与计算机学院 一、背景和编写目的 随着时代的进步,社会的发展,科学技术的进步,我们会在很多地方用到比较器,比如,在体育竞技场地对一些选手的成绩进行比较,选出他们中的成绩优异者;我们为了比较一下不同物品的参数,我们可以利用一些科学技术来实现这些功能,使得我们的工作效率得以提高,减少了我们认为的工作量。 本次设计的目的就是通过实践掌握数字电路的分析方法和设计方法,了解了

解EDA技术和maxplus2软件并掌握VHDL硬件描述语言的设计方法和思想。以数字电子技术基础为指导,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识和基本单元电路的综合设计应用。通过对比较器的设计,巩固和综合运用所学知识,提高分析、解决计算机技术实际问题的独立工作能力。 比较器有2位数比较器,4位数比较器,8位数比较器等多种。本课程设计就是两位数比较器,可以实现2位二进制数值的比较。 二、EDA和VHDL的介绍 EDA技术 EDA技术的概念 EDA是电子设计自动化(E1echonics Des5p AM?toM60n)的缩写。由于它是一门刚刚发展起来的新技术,涉及面广,内容丰富,理解各异。从EDA技术的几个主要方面的内容来看,可以理解为:EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门新技术。 EDA技术的特点 采用可编程器件,通过设计芯片来实现系统功能。采用硬件描述语言作为设计输入和库(LibraLy)的引入,由设计者定义器件的内部逻辑和管脚,将原来由电路板设计完成的大部分工作故在芯片的设计中进行。由于管脚定义的灵活性,大大减轻了电路图设计和电路板设计的工作量和难度,有效增强了设计的灵活性,提高了工作效率。并且可减少芯片的数量,缩小系统体积,降低能源消耗,提高了系统的性能和可靠性。能全方位地利用计算机自动设计、仿真和调试。VHDL语言 VHDL语言的简介 VHDL语言是一种用于电路设计的高级的硬件描述语言。其主要是应用在数字电路的设计中。在一些实力较为雄厚的单位,它常被用来设计ASIC。 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计分成外部和内部,既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点.与其他硬件描述语言相比,VHDL的特点: 1、功能强大、设计灵活: 它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计。VHDL支持自底向上的设计,又支持自顶向下的设计。 2、支持广泛、易于修改: 大多数EDA工具几乎都支持VHDL,故在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。 3、强大的系统硬件描述能力

4位数值比较器设计

电子技术课程设计报告题目: 4位数值比较器设计 学生姓名: 学生学号: 年级: 专业: 班级: 指导教师:

机械与电气工程学院制 2016年11月 4位数值比较器设计 机械与电气工程学院:自动化专业 1.课程设计的任务与要求 1.1 课程设计的任务 采用Multisim 12.0软件实现4位数值比较器的设计与仿真。 1.2 课程设计的要求 (1)设计一个4位数值比较器的电路,对两个4位二进制进行比较。 (2)采用74Ls85集成数值比较器。 (3)要有仿真效果及现象或数据分析。 2.四位数值比较器设计方案制定 2.1 四位数值比较器工作的原理 对两个4位二进制数A3A2A1A0与B3B2B1B0进行比较。从A的最高位A3和B的最高位B3进行比较,如果他们不相等,则该位的比较结果可以作为两数的比较结果。若最高位A3=B3,则再比较次高位A2=B2,余此类推。如果两数相等,那么,必须将进行到最低位才能得到结果。可以知道: FA>B=FA3>B3+FA3=B3FA2>B2+FA3=B3FA2=B2FA1>B1+FA3=B3FA2=B2FA1=B2FA0 >B0+FA3=B3FA2=B2FA1=B1FA0=B0IA>B (2-1)FAB、IAB、IAB=IA

C打开文件 文本方式 二进制方式

C打开文件文本方式二进制方式 2009年11月01日星期日 22:53 Windows平台下 如果以“文本”方式打开文件,当读取文件的时候,系统会将所有的"\r\n"转换成"\n";当写入文件的时候,系统会将"\n"转换成"\r\n"写入。 如果以"二进制"方式打开文件,则读/写都不会进行这样的转换。 在Unix/Linux平台下,“文本”与“二进制”模式没有区别。 数据有字符型和非字符型(数)两种。按文本方式写文件指的是将数据转换为对应的字符型数据之后再写入文件。对于字符型数据,由于其本身就是ASCII码字符,一般不必转换,直接写入文件。但是,由于不同的系统对于换行符('\n')有不同的处理(转换)方式,在有的系统(如Windows)下也会对 '\n' 作适当的转换。 对于非字符型数据,都要进行转换处理。例如:int m = 12; 以及 double f = 2.3;,分别按照 "%d"、"%lf" 方式将 m 和 f 写入文件的时候,写入的分别是 '1'、'2' 两个字符以及 '2'、'.'、'3' 等三个字符的ASCII码值。显然,如果按照二进制方式写的话,在文件中一般 m 要占 4 个字节、f 要占 8 个字节。 一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。 简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)。 从上面可以看出文本文件基本上是定长编码的(也有非定长的编码如 UTF-8),基于字符嘛,每个字符在具体编码中是固定的,ASCII码是8个比特的编码,UNICODE一般占16个比特。而二进制文件可看成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。大家可能对BMP文件比较熟悉,就拿它举例子吧,其头部是较为固定长度的文件头信息,前2字节用来记录文件为BMP格式,接下来的8个字节用来记录文件长度,再接下来的4字节用来记录bmp文件头的长度。。。大家可以看出来了吧,其编码是基于值的(不定长的,2、4、8字节长的值都有),所以BMP是二进制文件。 二、文本文件与二进制文件的存取 文本工具打开一个文件的过程是怎样的呢?拿记事本来说,它首先读取文件物理上所对应的二进制比特流(前面已经说了,存储都是二进制的),然后按照你所选择的解码方式来解释这个流,然后将解释结果显示出来。一般来说,你选取的解码方式会是ASCII码形式(ASCII码的一个字符是8个比特),接下来,它8个比特8个比特地来解释这个文件流。例如对于这么一个文件流"01000000_01000001_01000010_01000011"(下划线''_'',是我为了增强可读性,而手动添加的),第一个8比特''01000000''按ASCII码来解码的

EDA实验报告(四选一、四位比较器、加法器、计数器、巴克码发生器)

EDA实验报告

实验14选1数据选择器的设计 一、实验目的 1.学习EDA软件的基本操作。 2.学习使用原理图进行设计输入。 3.初步掌握器件设计输入、编译、仿真和编程的过程。 4.学习实验开发系统的使用方法。 二、实验仪器与器材 1.EDA开发软件一套 2.微机一台 3.实验开发系统一台 4.打印机一台 三、实验说明 本实验通过使用基本门电路完成4选1数据选择器的设计,初步掌握EDA设计方法中的设计输入、编译、综合、仿真和编程的过程。实验结果可通过实验开发系统验证,在实验开发系统上选择高、低电平开关作为输入,选择发光二极管显示输出电平值。 本实验使用Quartus II 软件作为设计工具,要求熟悉Quartus II 软件的使用环境和基本操作,如设计输入、编译和适配的过程等。 实验中的设计文件要求用原理图方法输入,实验时,注意原理图编辑器的使用方法。例如,元件、连线、网络名的放置方法和放大、缩小、存盘、退出等命令的使用。学会管脚锁定以及编程下载的方法等。 四、实验要求 1.完成4选1数据选择器的原理图输入并进行编译; 2.对设计的电路进行仿真验证; 3.编程下载并在实验开发系统上验证设计结果。 五、实验结果 4选1数据选择器的原理图: 仿真波形图:

管脚分配:

实验2 四位比较器 一、实验目的 1.设计四位二进制码比较器,并在实验开发系统上验证。 2.学习层次化设计方法。 二、实验仪器与器材 1.EDA 开发软件 一套 2.微机 一台 3.实验开发系统 一台 4.打印机 一台 5.其它器件与材料 若干 三、实验说明 本实验实现两个4位二进制码的比较器,输入为两个4位二进制码0123A A A A 和 0123B B B B ,输出为M (A=B ),G (A>B )和L (A

【IT专家】Linux下二进制方式读写文件

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 Linux下二进制方式读写文件 2017/03/29 0 最近在做项目需要把内存数据写入到文件中,然后再从文件中以二进制方式读出使用。由于接触Linux开发时间不长,开始询问度娘,度娘的 回答是使用以wb方式打开文件后使用fwrite把数据写入文件,以rb方式打开文件 后使用fread读出数据。下面详细介绍一下相关的函数极其使用说明。需要用的头文件为stdio.h,函数结构为fwrite、fread、fseek、ftell、fstat。1. fwrite size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream); 返回:返回实际写入的数据块数目(1)buffer:是一个指针,对fwrite来说,是要获取数据的地址;(2)size:要写入内容的单字节数;(3)count: 要进行写入size 字节的数据项的个数;(4)stream: 目标文件指针;(5)返回实际写入的数据项个数count。说明:写入到文件的哪里?这个与文件的打开模式有关,如果是w ,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a ,则从文件的末尾开始添加,文件长度加大。注意:这个函数以二进制形式对文件进行操作,不局限于文本文件2. fread size_t fread(void *buffer, size_t size, size_t count, FILE *stream) ; 返回:返回真实写入的项数,若大于count则意味着产生了错误。另外,产生错误后,文件 位置指示器是无法确定的。若其他stream或buffer为空指针,或在unicode模式中 写入的字节数为奇数,此函数设置errno为EINVAL以及返回0. (1)buffer:用于接收数据的内存地址;(2)size:要读的每个数据项的字节数,单位是字节;(3)count:要读count个数据项,每个数据项size个字节.;(4)stream: 目标文件指针;3. fseek int fseek(FILE * stream,long offset,int whence); 返回:成功返回0,失败返回-1,errno会存放错误代码。(1)stream: 目标文件指针;(2)offset: 相对于whence的偏移量;(3)whence:绝对位置。说明:fseek()用来移动文件流的读写位置。参数stream为已打开的文件指针,参数offset为根据参数whence来移动读写位置的位移数。注意1:参数whence为下列其中一种::

fopen , fread fwrite 函数读写二进制文件

fopen , fread fwrite 函数读写二进制文件 1#include 2#include 3int writeFile(const char* _fileName, char* _buf, unsigned int _bufLen) 4{ 5FILE * fp = NULL; 6if( NULL == _buf || _bufLen <= 0 ) return (-1); 7 8 fp = fopen(_fileName, "wb"); // 必须确保是以二进制写入的形式打开 9 10if( NULL == fp ) 11 { 12return (-1); 13 } 14 15 fwrite(_buf, _bufLen, 1, fp); //二进制写 16 17 fclose(fp); 18 fp = NULL; 19 20return 0; 21} 22int readFile(const char* _fileName, char* _buf,unsigned int _bufLen) 23{ 24FILE* fp = NULL; 25if( NULL == _buf || _bufLen <= 0 ) return (-1); 26 27 fp = fopen(_fileName, "rb"); // 必须确保是以二进制读取的形式打开 28 29if( NULL == fp ) 30 { 31return (-1); 32 } 33 34 fread(_buf, _bufLen, 1, fp); // 二进制读 35 36 fclose(fp); 37return 0; 38} 39 40int main(){ 41char * _buf;

Matlab中如何实现二进制文件的读写

Matlab中如何实现二进制文件的读写 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,‘打开方式’) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下: ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。 ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。 ‘a’:在打开的文件末端添加数据。文件不存在则创建。 ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。

2、二进制文件的读写操作 1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite(fid,A,'precision') 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。 例6.8 将一个二进制矩阵存入磁盘文件中。 >> a=[1 2 3 4 5 6 7 8 9]; >> fid=fopen('d:\test.bin','wb') %以二进制数据写入方式打开文件 fid = 3 %其值大于0,表示打开成功 >> fwrite(fid,a,'double') ans = 9 %表示写入了9个数据 >> fclose(fid) ans = 0 %表示关闭成功 2)读二进制文件 fread函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为: [A,COUNT]=fread(fid,size,'precision') 说明:其中A是用于存放读取数据的矩阵、COUNT是返回所读取的数据元素个数、fid为文件句柄、size为可选项,若不选用则读取整个文件内容;若选用则它的值可以是下列值:N (读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。precision用于控制所写数据的精度,其形式与fwrite函数相同。 %写一维数据至数据文件 n=0:pi/10:4*pi; y=sin(n); fip=fopen('C:\binary3.bin','wb'); fwrite(fip,Pxx,'double'); fclose(fip); %从数据文件读取一维数据 fip=fopen('C:\binary3.bin','rb'); [SIN,num]=fread(fip,[2,20],'double');%inf表示读取文件中的所有数据,[M,N]表示 %将读取的数据放置在M行N列中,N表示将读取的数据放置在1列中

相关文档
最新文档