大端模式与小端模式

什么是大端和小端

Big-Endian和Little-Endian的定义如下:
1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端

举一个例子,比如数字0x12 34 56 78在内存中的表示形式为:

1)大端模式:

低地址 -----------------> 高地址
0x12  |  0x34  |  0x56  |  0x78

2)小端模式:

低地址 ------------------> 高地址
0x78  |  0x56  |  0x34  |  0x12

大端转小端16位

  1. #define BigtoLittle16(A)   (( ((uint16)(A) & 0xff00) >> 8)    | \  
  2.                                        (( (uint16)(A) & 0x00ff) << 8))  

大端转小端32位

  1. #define BigtoLittle32(A)   ((( (uint32)(A) & 0xff000000) >> 24) | \  
  2.                                        (( (uint32)(A) & 0x00ff0000) >> 8)   | \  
  3.                                        (( (uint32)(A) & 0x0000ff00) << 8)   | \  
  4.                                        (( (uint32)(A) & 0x000000ff) << 24))  

 

小端转大端 16位

// 16位 将2个字节,转换成大端
static short Little2Big(byte A, byte B) {
return (short) (((short) (B) & 0x00ff) << 8 | ((short) (A) & 0x00ff));
}

 

posted on 2016-05-11 17:21  赵磊磊  阅读(385)  评论(0编辑  收藏  举报

导航