Protocol Buffers 学习(2):字段类型和其他语言字段类型之间的映射

对照表格

.proto Type介绍C++ TypeJava TypePython TypeGo TypeRuby TypeC# TypePHP Type
doubledoubledoublefloatfloat64Floatdoublefloat
floatfloatfloatfloatfloat32Floatfloatfloat
int32使用可变长度编码,不能编码负值,如果字段可能有负值,推荐使用sint32int32intintint32Fixnum 或者 Bignum (按需)intinteger
int64使用可变长度编码,不能编码负值,如果字段可能有负值,推荐使用sint64int64longint/longint64Bignumlonginteger/string
uint32使用可变长度编码uint32intint/longuint32Fixnum 或者 Bignum (按需)uintinteger
uint64使用可变长度编码uint64longint/longuint64Bignumulonginteger/string
sint32使用可变长度编码,有符号int型,比int32对负数支持更好int32intintint32Fixnum 或者 Bignum (按需)intinteger
sint64使用可变长度编码,有符号int型,比int64对负数支持更好int64longint/longint64Bignumlonginteger/string
fixed32始终为四个字节,值大于2^28时,比uint32更有效uint32intintuint32Fixnum 或者 Bignum (按需)uintinteger
fixed64始终为四个字节,值大于2^56时,比uint64更有效uint64longint/longuint64Bignumulonginteger/string
sfixed32始终为四个字节int32intintint32Fixnum 或者 Bignum (按需)intinteger
sfixed64始终为四个字节int64longint/longint64Bignumlonginteger/string
boolboolbooleanboolboolTrueClass/FalseClassboolboolean
string字符串必须始终包含UTF-8编码或7位ASCII文本stringStringstr/unicodestringString (UTF-8)stringstring
bytes可以包含任意的字节序列stringByteStringstr[]byteString (ASCII-8BIT)ByteStringstring

更多有关编码信息,可以查看谷歌文档(protobuf编码) 需翻墙

字段默认值

当消息被解析时,如果编码的消息不包含特定的单个元素(字段),则解析对象中的相应字段将被设置为该字段的默认值。 这些默认值是特定于类型的:

  • 对于字符串,默认值为空字符串
  • 对于字节,默认值为空字节。
  • 对于bools,默认值为false。
  • 对于数值类型,默认值为零。
  • 对于枚举,默认值是第一个定义的枚举值,它必须为0。
  • 对于消息字段,这个要看具体实现的语言
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值