概念
小端:低字节存放在低内存地址处
大端:低字节存放在高内存地址出
以0x12345678为例,从左到右为高字节到低字节,例如0x12就是高字节,0x78就是低字节,下面是实例
内存地址 | 小端模式 | 大端模式 |
---|---|---|
0x4003 | 0x12 | 0x78 |
0x4002 | 0x34 | 0x56 |
0x4001 | 0x56 | 0x34 |
0x4000 | 0x78 | 0x12 |
大小端互换
此处针对无符号整数,有符号整数符号位需要另外处理
int main() {
unsigned int newnum = 0;
unsigned int old = 1;
newnum |= (old & 0x000000ff) << 24;
newnum |= (old & 0x0000ff00) << 8;
newnum |= (old & 0x00ff0000) >> 8;
newnum |= (old & 0xff000000) >> 24;
cout << newnum << endl;
return 0;
}
如何判断大小端
int main() {
unsigned int num = 0x000000ff;
num = num >> 8;
cout << num << endl;
return 0;
}
num为0说明就是小端序,num不为0说明是大端序(按该题结果应该是16711680)