学物联网,来万物简单IoT物联网!!
ustruct 介绍
ustruct提供打包和解压原始数据类型的功能。 默认情况下,C类型以机器的本机格式和字节顺序表示,并在必要时通过跳过填充字节来正确对齐(根据C编译器使用的规则)。参考下表,格式字符串的第一个字符用于指示打包数据的字节顺序,大小和对齐方式:
字符 自己额顺序 大小 对其方式 @ native native native = native standard none < little-endian standard none > big-endian standard none ! network (= big-endian) standard none
格式化字符表
格式 C语言的类型 Python对应的类型 类型所占空间大小 x pad byte no value c char bytes of length 1 1 b signed char integer 1 B unsigned char integer 1 ? _Bool bool 1 h short integer 2 H unsigned short integer 2 i int integer 4 I unsigned int integer 4 l long integer 4 L unsigned long integer 4 q long long integer 8 Q unsigned long long integer 8 n ssize_t integer N size_t integer f float float 4 d double float 8 s char[] bytes p char[] bytes P void * integer
接口说明
calcsize - 返回存放 fmt 需要的字节数
函数原型:ustruct.calcsize(fmt) 参数说明:
参数 类型 必选参数? 说明 fmt 格式字符 是 详情参考上文格化式字符表
返回值 返回存放fmt格式的对象需要的字节数。 示例:
>> > ustruct. calcsize( 'i' ) 4
>> > ustruct. calcsize( 'd' ) 8
pack - 按照格式字符串fmt压缩参数
函数原型:ustruct.pack(fmt, v1, v2, …) 参数说明:
参数 类型 必选参数? 说明 fmt string 是 压缩参数时所采用的格式字串,详情见上文格化式字符表 v1 - 是 要压缩的对象v1 v2 - 是 要压缩的对象v2 … - 是 要压缩的其它对象
>> > ustruct. pack( 'iiiii' , 1 , 2 , 3 , 4 , 5 )
b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x 00\x00'
unpack - 根据格式化字符串fmt对数据进行解压
函数原型:unstrcut.unpack(fmt, data) 参数说明:
参数 类型 必选参数? 说明 fmt string 是 解压缩数据时所采用的格式字串,详情见上文格化式字符表 data bytearray 是 要解压缩的对象v1
>> > ustruct. unpack( 'iiiii' , b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x 00\x04\x00\x00\x00\x05\x00\x00\x00' )
( 1 , 2 , 3 , 4 , 5 )