簡體   English   中英

關於序列化向量 <int32_t> 在TCP緩沖區?

[英]About serialize vector<int32_t> in a TCP buffer?

我想在緩沖區中添加向量的大小。 但是我不確切知道尺寸的類型是什么。 畢竟,std :: size_t不能為固定大小。 在我看來,我打算改用uint64_t。 然后,緩沖區將如下所示:

8 bytes length | 4 bytes element1 | 4 bytes element2 | ... |

現在的問題是uint64_t並不意味着std :: size_t。 任何更好的想法將不勝感激。

您可以使用任何需要的類型,只要它可以保存您正在使用的值即可。 由於它已經是size_t ,請保持這種方式。 確定要用於表示該值的字節數以及每個字節需要的值,並編寫代碼以正確地編碼/解碼每個字節。

你快到了 當前沒有平台使用size_t大於64位(通過實驗性100TBit光纖傳輸價值64位的int32需要花費幾天的時間)。 這些步驟是:

  1. const uint64_t len = vec.length();
  2. 按照定義的順序將八個字節寫入tcp緩沖區。
  3. 按照定義的順序將每個int的四個字節寫入tcp緩沖區。
  4. 發送。

請注意,最后兩個步驟必須循環成千上萬個元素。

暫無
暫無

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

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