Rumah  >  Artikel  >  Java  >  Bagaimanakah Anda Mengekod dan Menyahkod Mesej Penampan Protokol dalam C Menggunakan I/O Terhad?

Bagaimanakah Anda Mengekod dan Menyahkod Mesej Penampan Protokol dalam C Menggunakan I/O Terhad?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-28 17:14:29207semak imbas

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

C Setara untuk Java's Protocol Buffers Delimited I/O Functions

Dalam kedua-dua C dan Java, timbul keperluan untuk membaca dan menulis berbilang Protokol Menampan mesej daripada fail. Java versi 2.1.0 menawarkan satu set fungsi I/O "Terhad" untuk tujuan ini:

  • parseDelimitedFrom
  • mergeDelimitedFrom
  • writeDelimitedTo
  • Fungsi ini memudahkan lampiran awalan panjang sebelum setiap mesej. Walau bagaimanapun, masih tidak jelas sama ada keupayaan sedemikian wujud dalam C .

    Kewujudan Setara C

    Pada mulanya, tiada setara C langsung untuk fungsi Java ini. Walau bagaimanapun, pada versi 3.3.0, C kini menampilkan fungsi utiliti mesej terhad dalam google/protobuf/util/delimited_message_util.h.

    Format Awalan Saiz

    Untuk pengguna yang ingin melaksanakan parser mereka sendiri dalam C sebelum keluaran utiliti rasmi ini, adalah penting untuk memahami format wayar untuk awalan saiz yang dilampirkan oleh API Java. Format mematuhi garis panduan berikut:

      Pembatas mesti ada walaupun sebelum mesej pertama.
    • Saiz mesej dikodkan sebagai varian 32-bit.
    • Bait pembatas 1 bait (0x0A) menamatkan setiap mesej dan mesej awalan panjang seterusnya bermula serta-merta selepas itu.

    Pelaksanaan C Dioptimumkan

    Susulan keluaran fungsi utiliti C rasmi, beberapa pengoptimuman ditemui yang tiada daripada pelaksanaan yang dicadangkan pada asalnya. Fungsi yang dioptimumkan ini, yang disediakan di bawah, menawarkan prestasi yang lebih baik dan mengelakkan kemungkinan ralat:

Atas ialah kandungan terperinci Bagaimanakah Anda Mengekod dan Menyahkod Mesej Penampan Protokol dalam C Menggunakan I/O Terhad?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn