大小端问题
Short a= 15; //在内存中是一个字节一个字节的存储
高字节 0000 0000
低字节 0000 1111
15在内存中的存储
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
小端
低地址
高地址
0000
1111
0000
0000
大端
低地址
高地址
0000
0000
0000
1111
大端换成小端不用库函数用位运算
例 a = 1010 0011 1111 0000 1010 0101 1100 0011
大端 10100011 11110000 10100101 11000011
小端 11000011 10100101 11110000 10100011
(a&0xff000000)>>24| (a&0x00ff0000)>>8|(a&0x0000ff00)<<8|(a&0x000000ff)<<24
写程序判断大小端
typedef union
{
Char a;
Int b;
} DATE;
DATE A;
A.b = 1;
Printf(“%d”,A.a);//A.a是看char和int型共用的那个部分
0 小端
1 大端
该共用体总共占了4个字节
低地址
高地址
Char
Int 都低地址开始存,最共用的是这个字节
假如是大端
低地址
高地址
0000
0000
0000
0001
假如是小端
低地址
高地址
0000
0001
0000
0000
