位序:

字节序:
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

如何通过代码判断大小端

  1. #include <stdio.h>
  2. void test_endian(void)
  3. {
  4. union Test {
  5. short num;
  6. char c[sizeof(short)];
  7. } t;
  8. t.num = 0x0102;
  9. if (t.c[0] == 1 && t.c[1] == 2)
  10. printf("big endian\r\n");
  11. else if (t.c[0] == 2 && t.c[1] == 1)
  12. printf("little endian\r\n");
  13. else
  14. printf("other endian\r\n");
  15. }