Python 小模块学习-------struct数据格式转换

转自:http://python.01314.cn/20150628.html

当Python需要通过网络与其他平台进行交互的时候,就必须考虑将这些数据类型与其他平台或语言之间的类型进行互相转换问题。


struck.pack   将字符串理解为字节流或字节数组。

函数原型为:struct.pack(fmt,v1,v2....),参数fmt 是格式字符串,v1 ,v2 ...表示要转换的python值。


import struct  
  
a = 20  
b = 400  
  
str = struct.pack("ii", a, b)  #转换后的str虽然是字符串类型,但相当于其他语言中的字节流(字节数组),可以在网络上传输  
print 'length:', len(str)  
print str  
print repr(str)  
  
#---- result  
#length: 8  
#    ----这里是乱码  
#'/x14/x00/x00/x00/x90/x01/x00/x00'  

struct.unpack 

struct.unpack做的工作刚好与struct.pack相反,用于将字节流转换成python数据类型。它的函数原型为:struct.unpack(fmt, string),该函数返回一个元组

str = struct.pack("ii", 20, 400)  
a1, a2 = struct.unpack("ii", str)  
print 'a1:', a1  
print 'a2:', a2  
  
#---- result:  
#a1: 20  
#a2: 400  

struct.calcsize 用于计算格式字符串所对应的结果的长度。

关于格式字符串


在Python手册中,给出了C语言中常用类型与Python类型对应的格式符:

格式符 C语言类型 Python类型
x pad byte no value  
c char string of length 1  
b signed char integer  
B unsigned char integer  
? _Bool bool  
h short integer  
H unsigned short integer  
i int integer  
I unsigned int integer or long  
l long integer  
L unsigned long long  
q long long long  
Q unsigned long long long  
f float float  
d double float  
s char[] string  
p char[] string  
P void * long


你可能感兴趣的:(python)