首頁  >  文章  >  Java  >  如何使用定界 I/O 在 C 中編碼和解碼 Protocol Buffers 訊息?

如何使用定界 I/O 在 C 中編碼和解碼 Protocol Buffers 訊息?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-28 17:14:29207瀏覽

How Do You Encode and Decode Protocol Buffers Messages in C   Using Delimited I/O?

Java 協定緩衝區分隔I/O 函數的C 等效項

在C 和Java 中,都需要讀寫多個協定緩衝來自文件的訊息。 Java 版本2.1.0 為此提供了一組「分隔」I/O 函數:

  • parseDelimitedFrom
  • mergeDelimitedFrom
  • write這些函數有助於在每個訊息之前附加長度前綴。然而,目前尚不清楚 C 中是否存在這樣的功能。

C 等效項的存在

最初,這些 Java 函數沒有直接的 C 等效項。然而,從版本 3.3.0 開始,C 現在在 google/protobuf/util/delimited_message_util.h 中提供了分隔訊息實用函數。

大小前綴格式

For如果用戶希望在這些官方實用程式發布之前用C 語言實現自己的解析器,那麼了解Java API 附加的大小前綴的傳輸格式非常重要。此格式遵循以下準則:

分隔符號甚至必須出現在第一則訊息之前。

    訊息的大小被編碼為 32 位元 varint。
  • 1 位元組分隔符號位元組 (0x0A) 終止每個訊息,下一個長度前綴訊息緊接著開始。
  • 優化的 C 實作

官方 C 實用函數發布後,發現了最初提出的實作中缺少的一些最佳化。下面提供的這些最佳化函數可提高效能並避免潛在錯誤:

以上是如何使用定界 I/O 在 C 中編碼和解碼 Protocol Buffers 訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn