Python-Struct

Posted 徐伟的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-Struct相关的知识,希望对你有一定的参考价值。

从一个例子开始:

>>> from struct import *
>>> pack(\'hhl\',1655, 255, 370)
b\'w\\x06\\xff\\x00r\\x01\\x00\\x00\'
>>> unpack(\'hhl\', b\'w\\x06\\xff\\x00r\\x01\\x00\\x00\')
(1655, 255, 370)
>>> calcsize(\'hhl\')
8

struct.pack(format, v1, v2, ...)

返回:一个字节对象

打包v1,v2...16进制值,默认低位在前高位在后

>>> from struct import *
>>> pack(\'hhl\',1655, 255, 370)
b\'w\\x06\\xff\\x00r\\x01\\x00\\x00\'
b\'w\\x06\\xff\\x00r\\x01\\x00\\x00\'.hex()
\'7706ff0072010000\'

16进制,2字符占1字节

如图:

struct.unpack(format, buffer)

返回:一个元组

解压一个字节对象为元组

>>> unpack(\'hhl\', b\'w\\x06\\xff\\x00r\\x01\\x00\\x00\')
(1655, 255, 370)

struct.calcsize(format)

返回:返回定义格式的字节大小

>>> calcsize(\'hhl\')
8

hhl:2+2+4 =8

完整示例

import struct

#默认低位在前,高位在后,“<”模式
b = struct.pack(\'ihb\', 255, 22, 37)
s = struct.unpack(\'ihb\',b)
print(b)
print(s)
print("*******************")

data = [255, 22, 37]
#网络结构 :“!”和“>”相同,高位在前
buffer = struct.pack(\'!ihb\', *data)
buffer_u =struct.unpack(\'!ihb\', buffer)
print(buffer)
print(buffer_u)
print("*******************")

# 压缩解压不同模式,则解压错误
buffer_s =struct.unpack(\'ihb\', buffer)  
print(buffer_s)

b\'\\xff\\x00\\x16\\x00%\\x00\\x00\\x00\'
(255, 22, 37)
*******************
b\'\\x00\\xff\\x00\\x16\\x00\\x00\\x00%\'
(255, 22, 37)
*******************
(-256, 5632, 620756992)

以上是关于Python-Struct的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数