首先,什么是大端(big-endian)字节序和小端(little-endian)字节序呢?
所谓大端字节序就是高字节存储在低地址,低字节存储在高地址。小端字节序则刚好相反,高字节存储在高端地址,低字节存储在低地址。
例如16位整数,0x0102。如果高字节0x01存储在低地址中A中,低字节0x02存储在高地址A+1中,则是大端字节顺序。
如果高字节0x01存储在高地址中A+1中,低字节0x02存储在高地址A中,则是小端字节顺序。
知道定义之后,如何测试一台机器是大端字节顺序,还是小端字节顺序?
#include <stdio.h>
int main()
{
union {
short a;
char c[2];
} u;
u.a = 0x0102;
if(u.c[0] == 0x01)
printf("lillte-endian.\n");
else
printf("big-endian.\n");
return 0;
}测试中,我的主机是大端字节顺序。
处理器为AMD x6 1055T

3031

被折叠的 条评论
为什么被折叠?



