typedef struct {
union {
char a[8];
struct {
unsigned long z;
unsigned long o;
} ss;
} ss;
} st3;
我在内存中有这个结构我想将它序列化为我可以使用的结构,如何正确序列化? 感谢。
答案 0 :(得分:3)
早上好在他的评论中,你必须知道工会包含什么。通常,定义结构如:
typedef struct {
int union_type;
union {
char a[8];
struct {
unsigned long z;
unsigned long o;
} ss;
} ss;
} st3;
其中union_type
表示联合是否包含char数组或结构。如果你知道这一点,你可以序列化结构,接收者可以重新构造它,因为在序列化联合之前,你输出union_type
然后输出正在使用的成员(字符或结构)。
有一种替代方法:确定联合的最大组件(此处不相关),并将其输出为二进制字节,例如:作为\x1a\x1b...
的列表。那你就不需要知道工会里有什么了。如果接收器像这样重新组装它,它将完美转移的对象传递给功能程序,让我们希望知道联合所包含的东西......一个注意:这个方法要求两个机器的字节顺序是同样的,否则多头将被重新组装错误。