三.protobuf3標量值類型


Protobuf3 標量值類型

  標量消息字段可以具有以下類型之一——該表顯示了.proto文件中指定的類型,以及自動生成的類中的相應類型:

.proto類型 說明 C++ 類型 Java 類型 Python類型 Go類型 Ruby類型 C#類型 PHP類型
double   double  double  float  float64  Float  double float
float   float  float  float  float32  Float  float  float
int32  使用可變長度編碼。編碼負數效率低下——如果你的字段可能有負值,請改用sint32。 int32  int  int  int32  Fixnum或Bignum(根據需要) int  integer
int64 使用可變長度編碼。編碼負數效率低下——如果你的字段可能有負值,請改用sint64。 int64  long  int/long[3]  int64  Bignum  long  integer/string[5]
uint32  使用可變長度編碼。 uint32  int[1] int/long[3]  uint32  Fixnum或Bignum (根據需要) uint integer
uint64  使用可變長度編碼。 uint64  long[1]   int/long[3] uint64  Bignum  ulong  integer/string[5]
sint32  使用可變長度編碼。符號整型值。這些比常規int32s編碼負數更有效。 int32  int  int  int32  Fixnum或Bignum (根據需要) int  integer
sint64  使用可變長度編碼。符號整型值。這些比常規int64s編碼負數更有效。 int64  long  int/long[3] int64  Bignum  long  integer/string[5]
fixed32  總是四字節。如果值通常大於228,則比uint 32更有效 uint32  int[1]  int/long[3]  uint32 Fixnum或Bignum (根據需要) uint  integer
fixed64  總是八字節。如果值通常大於256,則比uint64更有效 uint64  long[1] int/long[3] uint64  Bignum  ulong   integer/string[5]
sfixed32  總是四字節。 int32  int  int  int32 Fixnum或Bignum (根據需要) int  integer
sfixed64  總是八字節。 int64  long   int/long[3] int64 Bignum  long  integer/string[5]
bool    bool  boolean  bool  bool  TrueClass/FalseClass bool  boolean
string  字符串必須始終包含UTF - 8編碼或7位ASCII文本 string  String  str/unicode[4]  string String (UTF-8) string  string
bytes  可以包含任意字節序列 string  ByteString  str  []byte String (ASCII-8BIT)  ByteString  string


  在協議緩沖區編碼中序列化消息時,您可以了解更多關於這些類型的編碼方式。

  [1] 在Java中,無符號的32位和64位整數使用它們的有符號對應值來表示,高位簡單地存儲在符號位中。

  [2] 在所有情況下,為字段設置值都將執行類型檢查以確保其有效。

  [3] 64位或無符號32位整數在解碼時總是表示得一樣長,但是如果在設置字段時給出了一個int,則可以是一個int。在所有情況下,該值必須符合設置時表示的類型。參見[2]

  [4] python字符串在解碼時表示為unicode,但是如果給出了ASCII字符串,則可以是str (這可能會發生變化)。

  [5] integer用於64位機器,string用於32位機器。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM