首页 > 其他 > 详细

主机字节序和网络字节序之间的相互转换

时间:2016-01-24 22:19:14      阅读:229      评论:0      收藏:0      [点我收藏+]
1、字节序问题
        计算机以字节(Octet,8 bit)进行数据组织,大于一个字节的数据需要区分字节顺序,目前存在两种字节序:
        BE:Big Endian(High-byte first),主要应用于Inter X86平台
        LE:Little Endian(Low-byte first),主要应用于PowerPC平台
2、源程序部分
import socket
 
def convert_integer():
    data = 1234
 
    print "Original: %s => Long host byte order: %s, Network byte order: %s" % (data, socket.ntohl(data), socket.htonl(data))
    print "Original: %s => Long host byte order: %s, Network byte order: %s" % (data, socket.ntohs(data), socket.htons(data))
 
if __name__ == ‘__main__‘:
    convert_integer()
 
程序运行结果:
C:\Python_Work>python 1_5_integer_conversion.py
Original: 1234 => Long host byte order: 3523477504, Network byte order: 3523477504
Original: 1234 => Long host byte order: 53764, Network byte order: 53764

3、结果分析

        data = 1234 #转换为二进制位?0000 0100 1101 0010?
        工作平台为Inter X86,因此字节序为LE,如果是short型的,字节顺序为:1101 0010? ?0000 0100,其整型为53764;如果是long型,字节书序为1101 0010? ?0000 0100 0000 0000 0000 0000,其整型为3523477504。

 

 

主机字节序和网络字节序之间的相互转换

原文:http://www.cnblogs.com/daoji/p/5155922.html

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