我正在尝试将一些无符号整数数据打包到使用 ctypes.create_string_buffer
创建的字符串缓冲区中。
这是以下代码段,以及显示错误 on codepad 的运行示例:
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
关于Python:如何使用 struct.pack_into 将不同类型的数据打包到字符串缓冲区中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5961407/