zoukankan      html  css  js  c++  java
  • 字节序转换以及判断字节序

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

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

    字节序转换函数:



    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。




  • 相关阅读:
    2020.11.21日记
    Miller-Rabin质数测试
    Deepin配置记录
    shell
    module load
    vma
    DRDI
    Android.mk
    AEE
    阿里云下配置二级域名的解析设置
  • 原文地址:https://www.cnblogs.com/ZhangJinkun/p/4570477.html
Copyright © 2011-2022 走看看