位序:
字节序:
0xaabbccdd 存在RAM中
**
大端:big-endian: 高字节存在低地址
| Addr | data |
|---|---|
| 0x4003 | 0xdd |
| 0x4002 | 0xcc |
| 0x4001 | 0xbb |
| 0x4000 | 0xaa |
小端:little-endian: 高字节存在高地址
| Addr | data |
|---|---|
| 0x4003 | 0xaa |
| 0x4002 | 0xbb |
| 0x4001 | 0xcc |
| 0x4000 | 0xdd |
常见CPU体系大小端分类
| 小端 | 大端 |
|---|---|
| X86 | 富士通MB91F522 |
| Renesase (RH850) | |
| ARM |
如何通过代码判断大小端
#include <stdio.h>void test_endian(void){union Test {short num;char c[sizeof(short)];} t;t.num = 0x0102;if (t.c[0] == 1 && t.c[1] == 2)printf("big endian\r\n");else if (t.c[0] == 2 && t.c[1] == 1)printf("little endian\r\n");elseprintf("other endian\r\n");}
