Python:如何使用 struct.pack_into 将不同类型的数据打包到字符串缓冲区中

2024-05-07

我正在尝试将一些无符号 int 数据打包到使用创建的字符串缓冲区中ctypes.create_string_buffer.

这是以下代码段,以及显示错误的运行示例在键盘上 http://codepad.org/S8nUWMcW:

import struct
import ctypes
import binascii

buf = ctypes.create_string_buffer(16)
struct.pack_into("=I=I=I", buf, 0, 1, 2, 3)
print binascii.hexlify(buf)

这会产生以下错误:

...
struct.error: bad char in struct format

该文档没有提及如果底层缓冲区是特定的 C 类型,是否可以打包不同类型的数据。在本例中,尝试将 unsigned int 数据打包到具有底层 c_char 类型的字符串缓冲区中。任何人都知道执行此操作的解决方案,或者是否有特定的方法来创建可以打包任何类型数据的缓冲区?


您不应该在每个输出说明符前添加“=”代码。就说一次:

struct.pack_into("=III", buf, 0, 1, 2, 3)

这产生:

01000000020000000300000000000000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:如何使用 struct.pack_into 将不同类型的数据打包到字符串缓冲区中 的相关文章

随机推荐