请教一下大家
from ctypes import *
raw_bytes = b"\x00\x01\x00"
class Test(Structure):
_fields_ = [
("name1", c_char * 2),
("name2", c_char)
]
buf = create_string_buffer(len(raw_bytes))
buf.raw = raw_bytes
test = Test.from_buffer(buf)
print(test.name1)
print(test.name2)
输出为
b''
b'\x00'
想将一串 bytes 数据直接转为结构体,试了一下上面的写法,发现存在一个问题,类型为 c_char_Array_2 的 name1 变量的值为空,反而 c_char 类型的 name2 变量的值为\x00,猜测会不会是字符串的\x00 截断的问题,希望能够得到解决
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.