关于 ctypes 中 Array 的问题

2019-12-11 12:22:46 +08:00
 wave4yy

请教一下大家

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 截断的问题,希望能够得到解决

2442 次点击
所在节点    Python
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/627943

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX