zoukankan      html  css  js  c++  java
  • 写程序判断系统是大端序还是小端序

      大端是高位字节先存储(低地址)
      小端是低位字节先存储(低地址)
      网络字节序是大端的,也就是高位字节先传输
      而int--char的强制转换,是将低地址的数值截断赋给char,利用这个准则可以判断系统是大端序还是小端序

     
    #include <iostream>
    using namespace std;
    int main()
    {
        int a = 0x1234;
        char c = static_cast<char>(a);
        if (c == 0x12)
            cout << "big endian" << endl;
        else if(c == 0x34)
            cout << "little endian" << endl;
    }

      利用union同理也可以做出判断。

    #include <iostream>
    using namespace std;
    union endian
    {
        int a;
        char ch;
    };
    int main()
    {
        endian value;
        value.a = 0x1234;
        if (value.ch == 0x12)
            cout << "big endian"<<endl;
        else if (value.ch == 0x34)
            cout << "little endian"<<endl;
    }
      endian中的ch对应整个endian的低地址段,若这一段内容等于0x34,即等于整数0x1234中的低位字节,说明低位字节先存储,说明是小端序。反之若ch=0x12说明高位字节先存储,说明是大端序。
     
    总而言之:
     
      高位字节在低地址,低位字节在高地址,大端序。
      高位字节在高地址,低位字节在低地址,小端序。
  • 相关阅读:
    ar游戏开发入门三步走
    什么是 OpenCL OpenGL
    https 服务器搭建
    javascript 访问cookie信息
    手机网页制作需要注意的一点东西
    asp.net下载文件几种方式
    javascriptM
    PDF转JPG
    java实现PDF转HTML
    关于mysql ERROR 1045 (28000)错误的解决办法
  • 原文地址:https://www.cnblogs.com/zhoudayang/p/5985563.html
Copyright © 2011-2022 走看看