关于python struct.pack打包嵌套结构数据的有关问题

关于python struct.pack打包嵌套结构数据的问题
用struct.pack进行数据打包并发送至网络
对端是c写的服务器, 接受的数据结构是一个嵌套的数据结构
typedef struct HeadTag {
    unsgined short length;
    unsigned short dwId;
} HeadT;

typedef struct MsgTag {
    HeadT head;
    int content Id;
    char name[6];
} MsgT

对于这种嵌套的结构如何进行数据打包?
我原本想通过struct.pack打包head数据, 然后再将head数据打包到msg中, 但是好像没法用:
Head = struct.pack('HH', 1, 2)
msg = struct.pack('4si10s', Head, 19, "abcdef")
但是报错:
struct.error: argument for 's' must be a string

想问问除了将嵌套的结构展平,还有没有别的办法? 感觉如果结构很大的话, 嵌套展平太不友好了

------解决方案--------------------
引用:
用struct.pack进行数据打包并发送至网络
对端是c写的服务器, 接受的数据结构是一个嵌套的数据结构
typedef struct HeadTag {
    unsgined short length;
    unsigned short dwId;
} HeadT;

typedef struct MsgTag {
    HeadT head;
    int content Id;
    char name[6];
} MsgT

对于这种嵌套的结构如何进行数据打包?
我原本想通过struct.pack打包head数据, 然后再将head数据打包到msg中, 但是好像没法用:
Head = struct.pack('HH', 1, 2)
msg = struct.pack('4si10s', Head, 19, "abcdef")
但是报错:
struct.error: argument for 's' must be a string

想问问除了将嵌套的结构展平,还有没有别的办法? 感觉如果结构很大的话, 嵌套展平太不友好了
socket只能发string数据,数据包是不知道你的数据到底是什么类型的,所以你得用能正确恢复数据结构的string发你的数据。一般我使用JSON发数据,好检查,便于恢复。当然,我做的soket作品只是玩具。仅供参考。说错请纠正。
------解决方案--------------------
import struct

def display(s):
    b = bytearray(s)
    for i in b:
        print "%02x" % i,
    print

Head = struct.pack('HH', 1, 2)
display(Head)
msg = struct.pack('4si10s', Head, 19, "abcdef")
display(msg)

关于python struct.pack打包嵌套结构数据的有关问题
关于python struct.pack打包嵌套结构数据的有关问题