zoukankan      html  css  js  c++  java
  • 大端还是小端

    //way 1
    union { unsigned long biths;
      unsigned char bytes[4]; } theValue;

    //way 2nd
    typedef char* bytePointer;
    void showBytes(bytePointer p, int len)
    {
      int i;

      for(i = 0; i < len; ++i)
        printf("%.2x -> %p", p[i], p+i);
    }

    void showShort(short svar)
    {
      showBytes((bytePointer) &svar, sizeof(short));
    }

    int main()
    {
      theValue.bytes[0] = 0;
      theValue.bytes[1] = 1;
      theValue.bytes[2] = 0;
      theValue.bytes[3] = 0;
      int isLittleEndian;
      isLittleEndian = theValue == 256;//为真则为小端,否则为大端

      short svar = 01;
      showShort(svar);//按字节地址从低地址到高地址打印字节内容

    }

    1.关于字节序列

    2.以上倒很清楚,要注意的是一个字节占据8个位。printf格式输出如果不熟悉的话(像我现在就不太熟悉),会有潜在的误会。

    例如256.是占据第二个字节的最低位。因为第一个字节各位全为0.

    十进制: 1, 2, 4, 8; 16, 32, 64, 128; 256 .... 1依次在二进制各位的十进制数的大小。

    二进制: 0000 0000 0001 0000

     十六进制:0       0       1     0     

    最终showBytes()中printf的%x是按照十六进制的方式输出。

    3.首先要肯定自己是对的,就是这些基础知识是掌握了的。不要随意推翻自己。

    本人有点自卑的习惯。这个毛病要改掉。慢慢改掉。

    4.但是我用的是苹果电脑,我一直预想输出是大端的样子。可殊不知,我才想到苹果支持intel,用了它的cpu:

    dogdot$ sysctl machdep.cpu

    machdep.cpu.max_basic: 13

    machdep.cpu.max_ext: 2147483656

    machdep.cpu.vendor: GenuineIntel

    machdep.cpu.brand_string: Intel(R) Core(TM) i5-4278U CPU @ 2.60GHz

     

  • 相关阅读:
    千万不要死于无知—几条健康忠告(一)
    2006中国大学生最佳雇主TOP50排行榜(转)
    chromedriver与chrome版本映射表(最新)
    selenium自动化测试学习(一)
    selenium自动化测试——常见的八种元素定位方法
    作业1
    快速搭建属于自己的数据库——mongodb
    通过express搭建自己的服务器
    我的前端之路
    分享ES6中比较常用又强大的新特性
  • 原文地址:https://www.cnblogs.com/dotdog/p/4379339.html
Copyright © 2011-2022 走看看