是否可以为 Protocol Buffer 中的字段定义数值范围?
Is it possible to define a numeric range for a field in Protocol Buffer?
我生活在一个非常 safety/critical 的 Ada-ic 环境中,并且养成了定义明确和有界的类型定义的习惯。我也遇到了很多 ASN1 usage/evangelists.
我周围的一些人认为 ASN1 优于协议缓冲区的关键特性之一是能够定义并因此检查数据范围。
所以,
- protocol buffers 没有任何范围定义是真的吗
系统 ?
- 在协议缓冲区之上有什么方法可以
提供这样的功能?
常见的数值类型定义,如 int32、int64 超出了此处的范围。
我读了这个 Google overview 并没有发现对任何数据范围定义的引用。除了关于枚举的特性 management/representation 和一些排序特性。
为了提供一些其他参考,我听说了 of/read 下面的链接,并了解到一个 Ada 实施项目。
Does anyone know of an Ada plugin for protocol buffers?
这导致
http://www.diva-portal.org/smash/get/diva2:690878/FULLTEXT02.pdf
Is it true that protocol buffers do not have any range definition system ?
是
Are there any means on top of protocol buffer that could provide such a feature ?
您编写代码来检查值是否在预期范围内。
Protocol buffers 确实没有任何内置的数值范围机制。
但是语法确实支持定义自定义选项:
extend google.protobuf.FieldOptions {
optional int32 maxval = 50001;
optional int32 minval = 50002;
}
message MyMessage {
required int32 month = 1 [(minval) = 1, (maxval) = 12];
}
根据使用的库,这些可以在运行时使用反射访问,或者您可以使用自定义代码生成器自动生成验证码。
我生活在一个非常 safety/critical 的 Ada-ic 环境中,并且养成了定义明确和有界的类型定义的习惯。我也遇到了很多 ASN1 usage/evangelists.
我周围的一些人认为 ASN1 优于协议缓冲区的关键特性之一是能够定义并因此检查数据范围。
所以,
- protocol buffers 没有任何范围定义是真的吗 系统 ?
- 在协议缓冲区之上有什么方法可以 提供这样的功能?
常见的数值类型定义,如 int32、int64 超出了此处的范围。
我读了这个 Google overview 并没有发现对任何数据范围定义的引用。除了关于枚举的特性 management/representation 和一些排序特性。
为了提供一些其他参考,我听说了 of/read 下面的链接,并了解到一个 Ada 实施项目。
Does anyone know of an Ada plugin for protocol buffers?
这导致
http://www.diva-portal.org/smash/get/diva2:690878/FULLTEXT02.pdf
Is it true that protocol buffers do not have any range definition system ?
是
Are there any means on top of protocol buffer that could provide such a feature ?
您编写代码来检查值是否在预期范围内。
Protocol buffers 确实没有任何内置的数值范围机制。
但是语法确实支持定义自定义选项:
extend google.protobuf.FieldOptions {
optional int32 maxval = 50001;
optional int32 minval = 50002;
}
message MyMessage {
required int32 month = 1 [(minval) = 1, (maxval) = 12];
}
根据使用的库,这些可以在运行时使用反射访问,或者您可以使用自定义代码生成器自动生成验证码。