我正在尝试使用 python 解析来自网络的输入数据包。
为此,我创建了简单的类:
class S2C_ChallengePacket(ctypes.Structure):
_pack_ = 1
_fields_ = [
("type", ctypes.c_byte),
("sessionid", ctypes.c_byte * 4),
("challenge", ctypes.c_wchar_p)]
字段“挑战”它是以 null 结尾的字符串,并且它具有可变(可变)大小。所以我在我的 S2C_ChallengePacket 类中添加了包变量。
pack一个可选的小整数,允许覆盖实例中结构字段的对齐方式。pack必须在分配字段时已经定义,否则将不起作用。
但是,如果我尝试参考“挑战”字段,我会收到“分段错误”错误。
packet = QueryPacket.S2C_ChallengePacket.from_buffer_copy(data)
print packet.challenge <--- "Segmentation fault" here