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

  

 

原文地址:https://www.cnblogs.com/leiyu2511/p/12710449.html