python pack和unpack的用法

#  按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流)

pack(fmt, v1, v2, ...) 

# 按照给定的格式(fmt)解析字节流string,返回解析出来的tuple

unpack(fmt, string)   

=======================================

>>> import struct
>>> struct.pack('>H',56)
'\x008'

>>> struct.unpack('>H','\x008')
(56,)


>>> struct.unpack('>H','\x008')[0]
56

====================

>>> struct.pack('@H', 56)
'8\x00'
>>> struct.unpack('@H', '8\x00')
(56,)
>>>
 

=====================

fmt格式为:

FORMAT C TYPE PYTHON TYPE STANDARD SIZE NOTES
x pad byte no value
c char string of length 1 1
b signed char integer 1 (3)
B unsigned char integer 1 (3)
? _Bool bool 1 (1)
h short integer 2 (3)
H unsigned short integer 2 (3)
i int integer 4 (3)
I unsigned int integer 4 (3)
l long integer 4 (3)
L unsigned long integer 4 (3)
q long long integer 8 (2), (3)
Q unsigned long long integer 8 (2), (3)
f float float 4 (4)
d double float 8 (4)
s char[] string
p char[] string
P void * integer (5), (3)

格式中的第一个字符来改变对齐方式(字节序).定义如下

CHARACTER BYTE ORDER SIZE ALIGNMENT
@ native native native
= native standard none
< little-endian standard none
> big-endian standard none
! network (= big-endian) standard none

你可能感兴趣的:(python,python)