zoukankan      html  css  js  c++  java
  • 二进制和ASCII文件的区别

    二进制和ASCII文件的区别

    觉得有用的话,欢迎一起讨论相互学习~Follow Me

    版权声明:本文为CSDN博主「迂者-贺利坚」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/sxhelijian/article/details/29594687

    Example

    #include<iostream>
    using namespace std;
    int main( )
    {
       char c[8]="100000";
       int n=100000;
       cout<<"c="<<c<<endl;
       cout<<"n="<<n<<endl;
       return 0;
    }
    

    运行结果:
      c=100000
      n=100000
    c默认是使用ASCII码进行表示的,即每一位都对应其二进制表示的ASCII码,而n直接使用二进制表示即将这个整数转换成二进制表示数
    有图为证。下面是在CodeBlock中单步执行上面的程序时,跟踪c和n的值看到的情形。

    字符串的c占用了8个字节,保存的是:1个'1'(ASCII码为49,二进制110001)、5个'0'(ASCII码为48,二进制110000),最后2个字节为''(ASCII码为0)
    而整型的n,用4个字节(可以将图中二进制1 1000 0110 1010 0000转成十进制,正好100000。本来4字节32位,前面的0省略了)

    将n保存到ASCII文件中

    #include<fstream>
    using namespace std;
    int main( )
    {
        int n=100000;
        ofstream out("a.dat",ios::out);
        out<<n<<endl;
        return 0;
    }
    

    运行这段程序,将n输出到ASCII文件a.dat中

    将n保存到二进制文件中

    #include<fstream>
    using namespace std;
    int main( )
    {
        int n=100000;
        ofstream out("b.dat",ios::out|ios::binary);
        out.write((char*)&n, sizeof(n));
        return 0;
    }
    
    • 运行这一段程序,是用对二进制文件写入的方式,将n输出到文件b.dat中。
       用记事本打开b.dat文件,如图:
      将其视为二进制文件进行查看,使用Binary Viewer,看到的b.txt如下:

      文件为4字节大。按高位优先的原则(将图中显示的4个字节由后往前取出来),里面保存的数的十六进制形式是:0x000186A0,展开成二进制形式,自然是1 1000 0110 1010 0000,这恰是十进制数100000在内存中的形式。
      用BinaryViewer也看一下a.txt——前文中另一个也是保存100000的文件,只不过,是ASCII文件。查看结果是:

      文件共有8个字节,前面的6个字节,保存的是:1个'1'(ASCII码为49,十六进制为31),5个'0'(ASCII码为48,十六进制为30)
      由此可以看出二进制文件和ASCII文件的区别:前者,用和内存中一样的方式保存数据;而后者,用和cout显示一样的方式保存,存的是人“看起来”的那个样子。
       不方便人看的二进制文件实际上效率更高,用途更广,初学编程的童鞋,不要错过学会它的机会。

    附注:将数据使用二进制形式显示出来的方法

    在待观察的变量上击鼠标右键,选“Properties”,如下图

    在'Format'部分,如下图选择'Binary'后,点击'OK'。

  • 相关阅读:
    C++类中的封装-9
    递归神经网络
    卷积神经网络
    Tensorflow人工智能神经网络学习
    右键弹出菜单 并动态新增菜单子项
    sql 列转行
    sql 删除表中某字段的重复数据
    疑难问题解决
    jquery ashx交互 返回list 循环json输入信息
    jquery 控件赋值
  • 原文地址:https://www.cnblogs.com/cloud-ken/p/11671252.html
Copyright © 2011-2022 走看看