簡體   English   中英

有關Google協議緩沖區的查詢

[英]Query regarding Google Protocol Buffer

message Person {
    required string name = 1;
    required int32 id = 2;
    optional string email = 3; 
}

上面是Google協議緩沖區教程中提到的addrbook.proto文件的摘錄。 要求是,正在開發的應用程序將需要對從套接字接收的二進制數據進行解碼。例如,以二進制數據表示的名稱,ID和電子郵件。 現在,id可以讀取為整數。 但是我真的不確定如何讀取姓名和電子郵件,因為這兩個長度可能會有所不同。 (不幸的是,我沒有在這兩個字段之前添加長度前綴)期望應用程序從各種來源讀取此類數據。 我們的目標是為源自這些來源的不同類型的數據制作一個解碼器/適配器。 然后也可能有來自同一來源的不同類型的消息。 提前致謝

但是我真的不確定如何讀取姓名和電子郵件,因為這兩個長度可能會有所不同。

諸如protobuf之類的序列化程序的全部要點是, 您不必為此擔心 具體來說,對於protobuf字符串,始終以字節長度為前綴(使用UTF-8編碼,以及長度的varint編碼)。

不幸的是,我沒有在這兩個字段之前添加長度

那樣您就不會處理protobuf數據。 Protobuf是一種特定的數據格式,就像xml或json是一種數據格式一樣。 僅當您實際上在討論協議格式或使用該格式序列化的數據時,任何涉及“協議緩沖區”的對話才有意義。

協議緩沖區不是任意的數據處理API。 它不允許您處理除protobuf以外的任何格式的數據。

聽起來您可能正在嘗試手動重新實現協議緩沖區。 您不需要這樣做(盡管我確定這會很有趣)。 Google提供了C,Java和Python實現,可以將協議緩沖區項目中protobuf格式的內容序列化和反序列化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM