#!/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位下的情况。
主机字节序与网络字节序的转换:ntohl()与htonl()
原文地址:http://blog.csdn.net/o1101574955/article/details/45243795