python unpack_关于python中的struct.unpack()

感谢J.F.塞巴斯蒂安的提示。我终于弄明白了,要花点时间在这里解释。通常,我们必须在每个报头的结构中查找C类型,以了解在数据包的不同报头中的每个字段使用的C类型。然后,我们可以使用这个table来知道哪个格式说明符将表示哪个C类型。例如,在IP头的情况下,结构如下所示:struct ipheader {

unsigned char ip_hl:4, ip_v:4; /* this means that each member is 4 bits */

unsigned char ip_tos;

unsigned short int ip_len;

unsigned short int ip_id;

unsigned short int ip_off;

unsigned char ip_ttl;

unsigned char ip_p;

unsigned short int ip_sum;

unsigned int ip_src;

unsigned int ip_dst;

};

对于eg:unsigned char表示为“B”,unsigned int表示为“I”。现在我们可以使用这个方法来了解struct.unpack()中应该使用什么格式说明符来获取IP头的字段值。在IP报头的情况下,它变成如下:struct.unpack('!BBHHHBBHII')

但是你应该注意到大部分程序使用

struct.unpack('!BBHHHBBH4s4s')。

所以问题就来了,为什么在unsigned int ip_src;&;unsigned int ip_dst;的情况下,使用's'而不

你可能感兴趣的:(python,unpack)