zoukankan      html  css  js  c++  java
  • Big-endian

    一.将双字节转成2个单字节,eg:0x1100-->0x11和0x00

    #define HI_UINT16(a) (((a) >> 8) & 0xFF)
    #define LO_UINT16(a) ((a) & 0xFF)
    二.判断是大端模式还是小端模式
    int checkCPU(void)
    {
     union
     {
        int a;
        char b;
     }c;
     c.a = 1;
     return (c.b == 1);
    }

    剖析:由于联合体union的存放顺序是所有成员都从低地址开始存放,利用该特性就可以轻松地获得了CPU对内存采用Little- endian还是Big-endian模式读写。

    说明:
    1  在c中,联合体(共用体)的数据成员都是从低地址开始存放。
    2  若是小端模式,由低地址到高地址c.a存放为0x01 00 00 00,c.b被赋值为0x01;
      ————————————————————————————
       地址 0x00000000 0x00000001 0x00000002 0x00000003
       c.a  01         00         00         00
       c.b  01         00       
      ———————————————————————————— 
    3  若是大端模式,由低地址到高地址c.a存放为0x00 00 00 01,c.b被赋值为0x0;
      ————————————————————————————
       地址 0x00000000 0x00000001 0x00000002 0x00000003
       c.a  00         00         00         01
       c.b  00         00                
      ———————————————————————————— 
    4  根据c.b的值的情况就可以判断cpu的模式了。
    ----------------------------------------------------------
    三、大端小端转换方法:
     Big-Endian转换成Little-Endian如下:

    #define BigtoLittle16(A)                 ((((uint16)(A) & 0xff00) >> 8) |  
                                             (((uint16)(A) & 0x00ff) << 8)) 
    #define BigtoLittle32(A)                 ((((uint32)(A) & 0xff000000) >> 24) |  
                                             (((uint32)(A) & 0x00ff0000) >> 8) |  
                                             (((uint32)(A) & 0x0000ff00) << 8) |  
                                             (((uint32)(A) & 0x000000ff) << 24)) 

  • 相关阅读:
    扫面线模板
    (动态规划、栈)leetcode 84. Largest Rectangle in Histogram, 85. Maximal Rectangle
    tmux 常见命令汇总
    leetcode 221
    leetcode 319 29
    (贪心)leetcode 392. Is Subsequence, 771. Jewels and Stones, 463. Island Perimeter
    leetcode 982 668
    Python import 同文件夹下的py文件的函数,pycharm报错
    Windows里Anaconda-Navigator无法打开的解决方案
    Windows下 gpu版 Tensorflow 安装
  • 原文地址:https://www.cnblogs.com/yangjj08/p/10153671.html
Copyright © 2011-2022 走看看