字节序转换以及判断字节序

在网络信息跨主机传输过程中,不同主机的字节序问题可能不同,因此必须进行字节序的转换。

本地字节序--> 网络字节序 -->本地字节序

字节序转换函数:



htons和htonl是将本地字节序转换为网络字节序,htons是对16位整数进行转换,htonl是对32位正数进行转换,ntohs和ntohl恰好相反。

判断主机字节序和网络字节序:

 
   
  1. #include<arpa/inet.h>
  2. #include<stdio.h>
  3. //judge host endian
  4. void judge_host_endian()
  5. {
  6. short arg = 0x0102;
  7. short* ap = &arg;
  8. char* temp = (char*)ap;
  9. if(*temp==0x01)
  10. {
  11. puts("host:big-endian");
  12. }
  13. else if(*temp==0x02)
  14. {
  15. puts("host:small-endian");
  16. }
  17. }
  18. //judge net endian
  19. void judge_net_endian()
  20. {
  21. uint16_t arg = htons((uint16_t)0x0102);
  22. short* ap = &arg;
  23. char* temp = (char*)ap;
  24. if(*temp==0x01)
  25. {
  26. puts("net:big-endian");
  27. }
  28. else if(*temp==0x02)
  29. {
  30. puts("net:small-endian");
  31. }
  32. }
  33. int main()
  34. {
  35. judge_host_endian();
  36. judge_net_endian();
  37. return 0;
  38. }


所以win7是small-endian,网络字节序是big-endian。




转载于:https://www.cnblogs.com/ZhangJinkun/p/4570477.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值