网络字节序使用大端字节序:
#include <stdio.h> #include <arpa/inet.h> int main(void) { int k = 0x12345678; printf("%x %x %x %x ",*((char*)&k),*((char*)&k+1),*((char*)&k+2),*((char*)&k+3)); k = htonl(k); printf("%x %x %x %x ",*((char*)&k),*((char*)&k+1),*((char*)&k+2),*((char*)&k+3)); }
所谓大端字节序,是指高字节存于内存低地址,低字节存于内存高地址;小端字节序相反。一般 x86 机器都为小端字节序,而网络(称为网络字节序)使用大端字节序。