#!/usr/bin/env python
#coding=utf-8
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()
运行结果:
32位:
1234D=0xD2040000
windows(小端法:低位字节在低地址)下:
addr addr+1 addr+2 addr+3
0x D2 04 00 00
ntoh():假定给定数据是网络字节序(大端法:低位字节在高地址):
在windows内在中存储形式为:
addr addr+1 addr+2 addr+3
0x D2 04 00 00(当作是大端法)
转换后: 00 00 04 D2
在windows(小端法)下读取出来:
0xD2040000=3523477504
hton():假定给定数据是主机字节序(windows下为小端法):
在windows内在中存储形式为:
addr addr+1 addr+2 addr+3
0x D2 04 00 00(当作是小端法)
转换后: 00 00 04 D2
在windows(小端法)下读取出来:
0xD2040000=3523477504
同理可分析16位下的情况。