#!/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位下的情况。
时间: 2024-11-06 07:25:11