首页 > 编程语言 > 详细

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

时间:2020-04-16 10:05:25      阅读:63      评论:0      收藏:0      [点我收藏+]
 # 主机字节序和网络字节序之间的相互转换
 
 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

  

 

 

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!