对于单一的字节(a byte),大部分处理器以相同的顺序处理位元(bit),因此单字节的存放方法和传输方式一般相同。
对于多字节数据,如整数(32位机中一般占4字节),在不同的处理器的存放方式主要有两种,以内存中0x0A0B0C0D的存放方式为例
从外部读取字符串后,放入一个char型数组A,通过memcpy将A--〉int型数组B,如果是LITTLE_ENDIAN,想得到正确的字符串数据的话则需要进行字节序转换。
地址:低-----------高
A[0] ~A[3]:
------- -------- ------ ----------
0x0A | 0x0B| 0x0C | 0x0D
____ ____ ____ ______
大端序高位低地址,小端序高位高地址。
大端序对应B[0]就是0x0A0B0C0D
小端对应B[0]则是0x0D0C0B0A
sample:
.....//
char testmsg[100];
int msg[100];
sscanf(argv[index],"%10s", (char *)testmsg);
memcpy(msg, testmsg, 10*4);
#if BIG_ENDIAN
#else
for (int i =0;i<10;i++)
msg[i] = htonl(msg[i]);
#endif
..