不同的CPU采用的字节顺序可能不一样,常见的有little-endian和big-endian,little-endian是指将低位字节放在前面,高位字节放在后面,big-endian刚好相反。比如存储0x 00 00 01 02,存储位置为 0010到0013,在little-endian的情况下,存储方式为:
0010:02
0011:01
0012:00
0013:00
在big-endian情况下,存储方式为:
0010:00
0011:00
0012:01
0013:02
在网络通信中,计算机收到的字节按什么顺序处理容易引起混乱,为了做到与CPU无关,网络通信中规定字节顺序采用big-endian方式。
下面是python程序,用于转换为网络字节序和本地字节序
#!/usr/bin/env python import sys,struct def hton(num): #转换为网络字节序 return struct.pack(‘!H‘,num) def ntoh(num) #转换为本地字节序 return struct.unpack(‘!H‘,num) print "input a number" num=raw_input() num=int(num) print repr(hton(num)) print repr(ntoh(hton(num)))
运行程序:
Input a number:
12
‘\x00\x00\x00\x0c’
12
原文:http://blog.csdn.net/u011608357/article/details/19253949