我有多少机会实例化、保留和序列化/反序列化二进制数据Python类(从rfc2246[TLS]采用)来反映这种模式:
enum { apple, orange } VariantTag;
struct {
uint16 number;
opaque string<0..10>; /* variable length */
} V1;
struct {
uint32 number;
opaque string[10]; /* fixed length */
} V2;
struct {
select (VariantTag) { /* value of selector is implicit */
case apple: V1; /* VariantBody, tag = apple */
case orange: V2; /* VariantBody, tag = orange */
} variant_body; /* optional label on variant */
} VariantRecord;
基本上,我必须定义一个(variant)类VariantRecord,它根据VariantTag的值而变化。没那么难。挑战在于找到一种最通用的方法来构建一个类,该类在字节流之间进行序列化/反序列化。。。Pickle,Google协议缓冲区,marshal都不是一个选项。在
在我的类中有一个显式的“def serialize”没有取得什么成功,但是我对它不太满意,因为它不够通用。在
我希望我能表达这个问题。在
如果VariantTag=apple当前的解决方案是这样的,但我不太喜欢它
^{pr2}$问候
两个建议:
例如,如果我正确地理解了您的格式(您的示例中出现的长度字节,但在另一个变体中最初没有提到的长度字节是否也存在?)在
相关问题 更多 >
编程相关推荐