From 4b76bac6f6b4e50857aabd08f923864f6e41532a Mon Sep 17 00:00:00 2001 From: "Francis.Qin" Date: Thu, 16 Mar 2023 15:48:59 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ucollections.md" | 2 +- .../ustruct.md" | 57 +++++++++++++++++-- 2 files changed, 52 insertions(+), 7 deletions(-) diff --git "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/ucollections.md" "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/ucollections.md" index e3c2b1af..082ffba6 100644 --- "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/ucollections.md" +++ "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/ucollections.md" @@ -1,7 +1,7 @@ # ucollections - 集合和容器类型 -模块功能:ucollections 模块可以创建一个新的容器类型,用于保存各种对象。该模块实现了CPython模块相应模块的子集。更多信息请参阅阅CPython文档:[collections](https://docs.python.org/3/library/collections.html) +模块功能:ucollections 模块可以创建一个新的容器类型,用于保存各种对象。该模块实现了CPython模块相应模块的子集。更多信息请参阅CPython文档:[collections](https://docs.python.org/3/library/collections.html) ## `ucollections`方法 ### `ucollections.namedtuple` diff --git "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/ustruct.md" "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/ustruct.md" index 41546224..f136df2f 100644 --- "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/ustruct.md" +++ "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/ustruct.md" @@ -1,12 +1,12 @@ # ustruct - 打包和解压原始数据类型 -模块功能:`ustruct`模块实现相应CPython模块的子集。更多信息请参阅阅CPython文档:[struct](https://docs.python.org/3.5/library/struct.html#module-struct) +模块功能:`ustruct`模块实现相应CPython模块的子集。更多信息请参阅CPython文档:[struct](https://docs.python.org/3.5/library/struct.html#module-struct) ## 格式字符串 -格式字符串是用来在打包和解包数据时指定预期布局的机制。 其使用指定被打包/解包数据类型的`格式字符`进行构建。 此外,还有一些特殊字符用来控制`字节顺序`,`大小`和`对齐方式`。 +格式字符串是用来在打包和解包数据时指定预期布局的机制。 其使用指定被打包/解包数据类型的格式字符进行构建。 此外,还有一些特殊字符用来控制字节顺序,大小和对齐方式。 ### **字节顺序,大小和对齐方式** @@ -82,12 +82,21 @@ ustruct.pack(fmt, v1, v2, ...) **参数描述:** - `fmt` - 格式字符的类型,详情见上文格化式字符表 +- `v1`, `v2`, `...` - 是需要进行数据转换的变量名或值 **返回值描述:** - 返回参数编码后的字节对象。 +**示例:** + +```python +>>> import ustruct + +>>> ustruct.pack('ii', 7, 9) #打包两个整数 +b'\x07\x00\x00\x00\t\x00\x00\x00' +``` ### `ustruct.unpack` @@ -110,10 +119,10 @@ ustruct.unpack(fmt, data) ```python >>> import ustruct ->>> ustruct.pack('ii', 7, 9) #打包两个整数 -b'\x07\x00\x00\x00\t\x00\x00\x00' ->>> ustruct.unpack('ii', b'\x07\x00\x00\x00\t\x00\x00\x00') #解压两个整数 + +>>> ustruct.unpack('ii', b'\x07\x00\x00\x00\t\x00\x00\x00') #解压之前打包的两个整数 (7, 9) + ``` @@ -131,7 +140,26 @@ ustruct.pack_into(fmt, buffer, offset, v1, v2, ...) - `fmt` - 格式字符的类型,详情见上文格化式字符表 - `buffer` - 可写数据缓冲区 - `offset` - 写入的起始位置 +- `v1`, `v2`, `...` - 需要写入缓冲区的数据 + +**示例:** +```python +>>> import ustruct + +# 定义格式字符串 +>>> fmt = "3sB" +# 定义一个字符串和一个整数 +>>> name = "Tom" +>>> age = 25 + +# 将两个值按指定格式打包,并写入bytes类型的空缓冲区中 +>>> buf = bytearray(8) # 创建容量为8字节的缓冲区 +>>> ustruct.pack_into(fmt, buf, 0, name.encode(), age) # 将"name"编码成bytes类型并写入三个字符(占3个字节),后面紧跟着一个占1个字节的整数"age" + +>>> print(buf)#输出:bytearray(b'Tom\x19\x00\x00\x00') +bytearray(b'Tom\x19\x00\x00\x00\x00') +``` ### `ustruct.unpack_from` @@ -146,8 +174,25 @@ ustruct.unpack_from(fmt, data, offset=0) - `fmt` - 格式字符的类型,详情见上文格化式字符表 - `data` - 数据缓冲区(缓冲区大小以字节为单位) -- `offset` - 解压的起始位置 +- `offset` - (可选)解压的起始位置,默认为零 **返回值描述:** - 返回解压值的元组(即使只包含一个项)。 + +**示例:** + +```python +>>> import ustruct + +# 定义格式字符串 +>>> fmt = "3sB" +# 定义要解包的字节序列 +>>> data = bytearray(b'Tom\x19\x00\x00\x00\x00') + +# 从字节序列的第一个字节开始解包 +>>> result = ustruct.unpack_from(fmt, data, 0) +>>> print(result)#输出:(b'Tom', 25) +(b'Tom', 25) + +``` \ No newline at end of file -- Gitee From a952ebc23005c5c72ca9f432350ff9710e7f141b Mon Sep 17 00:00:00 2001 From: "Francis.Qin" Date: Thu, 16 Mar 2023 15:56:31 +0800 Subject: [PATCH 2/2] change wiki --- .../ustruct.md" | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/ustruct.md" "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/ustruct.md" index f136df2f..002dafab 100644 --- "a/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/ustruct.md" +++ "b/docs/API_reference/zh/QuecPython\346\240\207\345\207\206\345\272\223/ustruct.md" @@ -93,7 +93,7 @@ ustruct.pack(fmt, v1, v2, ...) ```python >>> import ustruct ->>> ustruct.pack('ii', 7, 9) #打包两个整数 +>>> ustruct.pack('ii', 7, 9) # 打包两个整数 b'\x07\x00\x00\x00\t\x00\x00\x00' ``` @@ -120,7 +120,7 @@ ustruct.unpack(fmt, data) ```python >>> import ustruct ->>> ustruct.unpack('ii', b'\x07\x00\x00\x00\t\x00\x00\x00') #解压之前打包的两个整数 +>>> ustruct.unpack('ii', b'\x07\x00\x00\x00\t\x00\x00\x00') # 解压之前打包的两个整数 (7, 9) ``` @@ -157,7 +157,7 @@ ustruct.pack_into(fmt, buffer, offset, v1, v2, ...) >>> buf = bytearray(8) # 创建容量为8字节的缓冲区 >>> ustruct.pack_into(fmt, buf, 0, name.encode(), age) # 将"name"编码成bytes类型并写入三个字符(占3个字节),后面紧跟着一个占1个字节的整数"age" ->>> print(buf)#输出:bytearray(b'Tom\x19\x00\x00\x00') +>>> print(buf) # 输出:bytearray(b'Tom\x19\x00\x00\x00') bytearray(b'Tom\x19\x00\x00\x00\x00') ``` @@ -192,7 +192,7 @@ ustruct.unpack_from(fmt, data, offset=0) # 从字节序列的第一个字节开始解包 >>> result = ustruct.unpack_from(fmt, data, 0) ->>> print(result)#输出:(b'Tom', 25) +>>> print(result) # 输出:(b'Tom', 25) (b'Tom', 25) ``` \ No newline at end of file -- Gitee