如何使用協議緩衝區存儲雙(1D)數組? 多維(2D或3D)密集陣列呢?協議緩衝區 - 存儲雙數組,1D,2D和3D
14
A
回答
20
20
人們可以簡單地模仿C/C++存儲器佈局:
message DoubleMatrix {
required uint32 rows = 1;
required uint32 cols = 2;
repeated double data = 3 [packed=true];
}
要訪問數據,使用data[i*cols+j]
(行優先),或data[i+rows*j]
(列主)。 對於方形矩陣,只需要存儲rows
/cols
之一。從技術上講,即使在矩形的情況下,protobuf將知道數據的長度,並且可以導出另一個值。
爲便於使用,人們可能會將C++中的Matrix與適配器類一起使用,該類允許通過double MatrixAdapter::get(int row, int col)
訪問;它也可以驗證data_size()==rows()*cols()
。
相關問題
- 1. Android和協議緩衝區
- 2. 協議緩衝區和Hadoop
- 3. 協議緩衝區
- 4. 協議緩衝區精簡版與常規協議緩衝區
- 5. JPA協議緩衝區
- 6. 在協議緩衝區消息中存儲二進制數據緩衝區
- 7. 協議緩衝區擴展
- 8. 谷歌協議緩衝區 -
- 9. 協議緩衝區挑戰
- 10. 谷歌協議緩衝區
- 11. 協議緩衝區 - @ModelAttribute
- 12. 擴展協議緩衝區
- 13. gson vs協議緩衝區
- 14. 協議緩衝區記錄
- 15. 協議緩衝區錯誤
- 16. Delphi協議緩衝區?
- 17. 協議緩衝區文件?
- 18. C++ 3D數組到1D會導致堆緩衝區溢出
- 19. Java協議緩衝區 - 消息大小
- 20. 谷歌協議緩衝區int32 vs int64
- 21. 協議緩衝區vs平坦緩衝區
- 22. 協議緩衝區和OO設計
- 23. Fedora 17和谷歌協議緩衝區
- 24. 谷歌協議緩衝區和UTF-16
- 25. 可視化gRPC和協議緩衝區
- 26. Google協議緩衝區和HTTP
- 27. 協議緩衝區:無固定大小緩衝區的符號?
- 28. Java大型對象存儲 - 協議緩衝區,MemoryMappedFiles
- 29. 只將.proto協議緩衝區文件放入存儲庫中?
- 30. 協議緩衝區的任何經驗?
可能重複[使用ProtoBuf-Net,如何(德)序列化多維數組?](http://stackoverflow.com/questions/4090173/using-protobuf-net-how-to-deserialize- a-multi-dimensional-array) –
b1nary.atr0phy,這個問題有解決一維數組問題;這個問題也關於C/C++,而不是.NET。如果我們註冊我的問題爲重複,將答案合併? – osgx