zoukankan      html  css  js  c++  java
  • 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
    

      

     

  • 相关阅读:
    HTML <input> 标签
    HTML5 <input> type 属性
    静态页面与动态页面
    string::size_type 页73 size_t 页90
    template method(模板方法)
    C++中创建对象的时候加括号和不加括号的区别(转)
    _declspec(dllexport)和.def(转)
    智能指针
    C++中的delete加深认识
    工厂方法(整理自李建忠<C++设计模式>视频)
  • 原文地址:https://www.cnblogs.com/leiyu2511/p/12710449.html
Copyright © 2011-2022 走看看