• Python网络编程-主机字节序和网络字节序之间相互转换


     # 主机字节序和网络字节序之间的相互转换
     
     import socket
     
     def convert_integer():
         data = 1234
         # 32-bit
         print("Original: %s => Long host byte order: %s, Network byte order: %s"
               % (data, socket.ntohl(data), socket.htonl(data)))
         # 16-bit
         print("Original: %s => Short host byte order: %s, Network byte order: %s"
               % (data, socket.ntohs(data), socket.htons(data)))
     
     if __name__ == '__main__':
         convert_integer()

    运行结果

     ntohl()、ntohs()、htonl()、htons()解释

    1.  ntohl()   将网络字节顺序转换成主机字节顺序(长字节32bit)

    2.  ntohs()  将网络字节顺序转换成主机字节顺序(短字节16bit)

    3.  htonl()   将主机字节顺序转换成网络字节顺序(长字节32bit)

    4.  htons()   将主机字节顺序转换成网络字节顺序(短字节16bit)

    网络字节顺序和主机字节顺序解释

    网络字节顺序NBO(Network Byte Order): 按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。
     
    主机字节顺序(HBO,Host Byte Order): 不同的机器HBO不相同,与CPU设计有关,数据的顺序是由cpu决定的,而与操作系统无关。
    如 Intel x86结构下, short型数0x1234表示为34 12, int型数0x12345678表示为78 56 34 12
    如 IBM power PC结构下, short型数0x1234表示为12 34, int型数0x12345678表示为12 34 56 78
    

      

     

  • 相关阅读:
    csp 初赛 (不懂的地方)
    4月11日晚科目一练习(95分)
    在博客园利用 MathJax 建支持 $\LaTeX$ 的博客
    4月9日科目一练习(88分)
    阿狸的故事
    4月10日晚科目一练习(95分)
    复变函数自身运动的三个节点
    4月11日科目一练习(97分)
    4月10日科目一练习(92分)
    极限题(4.5)
  • 原文地址:https://www.cnblogs.com/leiyu2511/p/12710449.html
Copyright © 2020-2023  润新知