Hello Feixy

原创文章,欢迎阅读,禁止转载
网络序 大端 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]; //千 百 十 
}

  

 

原创文章,欢迎阅读,禁止转载

 

posted on 2017-06-20 08:07  飞翔雨  阅读(535)  评论(0编辑  收藏  举报