2013-01-25 15 views
1

我试图解开字节蟒蛇: -如何在Python中使用结构模块解压字节?

import struct 


c_struct_exp='struct lokesh { int i=5;} lm;' 
result=struct.unpack('!i',bytes(c_struct_exp,'utf-8')) 
print(result) 

错误:

struct.error: unpack requires a bytes object of length 4 

请帮我在解压缩方法的格式字符串表达式。

回答

3

unpack用于拆包二进制数据,不是C源代码。要遵循您的单个整数成员结构的示例:

>>> from struct import * 
>>> pack('i', 134) 
'\x86\x00\x00\x00' 
>>> unpack('i', '\x86\x00\x00\x00') 
(134,) 
>>> 
+0

我没有直接使用C源代码。我将c源代码转换为原始字节: - 在使用它解包方法之前,将字节(c_struct_exp,'utf-8')转换为.. –

+0

尝试打印'bytes(...)'调用的输出 - 它仍然是*源代码*。 '解压缩'解码一个结构的内存映像*,而不是它的源描述。 –

+0

okk :)得到它...其实我试图解码从C客户端在服务器端(python接收端)的C结构数据包..我怎么能解码解压接收到的原始字节(C结构,这是内存图像,而不是客户端的源代码)...我如何解压上述类型的结构: - 'typedef struct packet {int command; union {struct {int data [100]; int ttl [100];}; struct {char config [256]; };};} myPacketStruct;' –

相关问题