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说明高位字节先存储,说明是大端序。
     
    总而言之:
     
      高位字节在低地址,低位字节在高地址,大端序。
      高位字节在高地址,低位字节在低地址,小端序。
  • 相关阅读:
    curl -L 跟随跳转
    Http报头Accept与Content-Type的区别
    curl 发送json请求
    IntelliJ 中类似于Eclipse ctrl+o的是ctrl+F12
    Spring AOP
    Windows下Nginx配置SSL实现Https访问(包含证书生成)
    @Retention n. 保留
    Exchanger使用
    Semaphore使用
    UVA12493
  • 原文地址:https://www.cnblogs.com/zhoudayang/p/5985563.html
Copyright © 2011-2022 走看看