码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-12 00:36:50      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

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

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

字节序转换函数:

技术分享

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。




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

标签:

原文地址:http://www.cnblogs.com/ZhangJinkun/p/4570477.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!