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

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。

 

 

posted on 2016-01-24 21:01  BingLee  阅读(1175)  评论(0)    收藏  举报

导航