ASCII文件和bin二进制文件的区别是什么

版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎联系我qq2488890051 https://blog.csdn.net/kangkanglhb88008/article/details/89528043

程序中一个结构体

struct A

{char a;

char b;

bool c;}

struct A v;

v.a = 128;

v.b = 16;

v.c = 1;

此时如果我们想把这个结构体变量v保存起来,就这样:

W25QXX_Write((u8*)&v,ADDR,sizeof(v));    //保存在地址为ADDR的flash存储器里或者保存在一个文件里都可以

那我们究竟保存进去了什么内容呢,实际上是10000000000100001而不是128161

注:1000 0000为128的二进制,0001 0000为16的二进制,1为bool型的二进制1

这里总共只保存了17个二进制位就完成了,实际上这个就是二进制文件,就是直接跟内存二进制位一一对应的

而如果是以文本文件(ASCii文件)方式保存呢,保存的就是128161这6个字符,而每一个字符对应一个字节,所以需要6个字节才能保存。

从上面可以看出,二进制文件实际上就是一串看不出任何意义的二进制数串罢了,与保存源头相联系才会具有具体意义

所以说二进制文件具有占用空间小,保密性高等优点(因为不是文本文件这样的字符明文),但是读取的规则就一定得结合生成的规则才能复原这些数据的意义。

比如一个单片机程序编译后的文件是.bin文件(是hex文件,但是烧录器是自己转为bin文件的)直接下载进入单片机flash即可运行,那是因为单片机就是需要这些二进制来设置相应的寄存器的0,1的。如果烧录一个文本文件(ascii文件)进去,很显然,单片机读不懂,因为单片机不是按照一个字符一个字符来读取,而是按照一个二进制位一个二进制位读取的(因此也有人称之为“流式文件),所以编译器也没必要生成字符形式的文件。

其他文件比如Windows系统的可执行软件.exe文件,操作系统镜像文件等等,都是二进制文件,即bin文件,因为这些文件是编译后的了,直接用于给计算机的寄存器和cpu读的,不是给人读的

猜你喜欢

转载自blog.csdn.net/kangkanglhb88008/article/details/89528043