我正在尝试将一些unsigned int数据打包到使用创建的字符串缓冲区中ctypes.create_string_buffer.
以下是代码段,以及显示错误在键盘上的运行示例:
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)
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误:
...
struct.error: bad char in struct format
Run Code Online (Sandbox Code Playgroud)
如果底层缓冲区是特定的C类型,则文档不会提示您是否可以打包不同类型的数据.在这种情况下,尝试将unsigned int数据打包到具有底层c_char类型的字符串缓冲区中.任何人都知道这样做的解决方案,或者是否有特定的方法来创建可以打包任何类型的数据的缓冲区?
unw*_*ind 12
您不应该使用'='代码为每个输出说明符添加前缀.只说一次:
struct.pack_into("=III", buf, 0, 1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
这会产生:
01000000020000000300000000000000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11154 次 |
| 最近记录: |