我可以用lengthPrefix将c#类反序列化为Python类吗?
我用c#中的ProtoBuf序列化了很多数据 一位同事希望使用Python读取这些文件 这可以通过Python类而不是c#来实现吗 下面是c#类:我可以用lengthPrefix将c#类反序列化为Python类吗?,c#,python,protocol-buffers,C#,Python,Protocol Buffers,我用c#中的ProtoBuf序列化了很多数据 一位同事希望使用Python读取这些文件 这可以通过Python类而不是c#来实现吗 下面是c#类: 这看起来像是protobuf-net;幸运的是,该库包含一个工具,可以根据它对您的模型的看法给出.proto模式: var schema = Serializer.GetProto<TickRecord>(); 其中,bcl.DateTime是“bcl.proto”中描述的protobuf net复杂数据类型 坦率地说,我建议您使用un
这看起来像是
protobuf-net
;幸运的是,该库包含一个工具,可以根据它对您的模型的看法给出.proto模式:
var schema = Serializer.GetProto<TickRecord>();
其中,bcl.DateTime
是“bcl.proto”中描述的protobuf net复杂数据类型
坦率地说,我建议您使用unix时间将日期时间更改为长的
——这样会使事情简单得多。这给了你:
message TickRecord {
required sfixed64 DT = 1 [default = 0];
required double BidPrice = 2 [default = 0];
required double AskPrice = 3 [default = 0];
required sfixed32 BidSize = 4 [default = 0];
required sfixed32 AskSize = 5 [default = 0];
}
您可以将其提供给您的同事,他们可以在其环境中运行协议缓冲区所需的protoc
或任何其他平台/库工具,并且应该进行设置。序列化格式是有意跨平台的,因此数据应该可以正常工作
注意:
*WithLengthPrefix
通过将数据包装在外壳中来工作。我需要查看您用于建议如何建议同事的确切参数
注意:将
DateTime
更改为long
是一个突破性的更改;如果你不能做到这一点,你的同事将不得不查看bcl.proto(只需谷歌一下),并将其翻译成python。这看起来像是protobuf-net
;幸运的是,该库包含一个工具,可以根据它对您的模型的看法给出.proto模式:
var schema = Serializer.GetProto<TickRecord>();
其中,bcl.DateTime
是“bcl.proto”中描述的protobuf net复杂数据类型
坦率地说,我建议您使用unix时间将日期时间更改为长的
——这样会使事情简单得多。这给了你:
message TickRecord {
required sfixed64 DT = 1 [default = 0];
required double BidPrice = 2 [default = 0];
required double AskPrice = 3 [default = 0];
required sfixed32 BidSize = 4 [default = 0];
required sfixed32 AskSize = 5 [default = 0];
}
您可以将其提供给您的同事,他们可以在其环境中运行协议缓冲区所需的protoc
或任何其他平台/库工具,并且应该进行设置。序列化格式是有意跨平台的,因此数据应该可以正常工作
注意:
*WithLengthPrefix
通过将数据包装在外壳中来工作。我需要查看您用于建议如何建议同事的确切参数
注意:将DateTime
更改为long
是一个突破性的更改;如果您不能做到这一点,您的同事将不得不查看bcl.proto(只需谷歌一下),并将其翻译成python