原创文章,欢迎阅读,禁止转载
网络序 大端 big-endian 可以抓包看清楚
主机序 小端 little-endian 但window确实是小端,亲自验证(实际上也有大端的机器)
大端小端,针对多字节数据而言的,字符串单字节,不存在这个问题
小端:低位在低地址,高位在高地址(主机序)
大端:低位在高地址(网络序)
int a=0x12345678;//结果如下:
有四个函数可以进行字节序转换:
htonl() //把整型数从主机序转为网络序,如果系统已经与网络序一致则直接返回 ntohl() htons() ntohs()
时隔几年了,在补充一段,如果已知字节序,该如何定义结构体呢?
字节序问题,其实就是要顺应字节序,如果高位应该在高地址,那么就把它放在高地址,仅此而已。
//如果是小端字节序,低地址存低位,高地址存高位 union{ int N; //4个字节对应的相当于是: char c[4]; //个 十 百 千 } //如果是大端字节序,高地址存低位 union{ int N; //4个字节对应的相当于是: char c[4]; //千 百 十 个 }
原创文章,欢迎阅读,禁止转载