protobuffer比xml,json 好就不說了。
關鍵就說兩個地方
為啥需要說著兩個呢,因為他的序列化後在 最前面需要加上長度,而這個並不是真正的長度,是經過乙個演算法生成的長度。
1. 把本地的字串轉換成 protobuffer
ocommonmsg.set_type(duolabo::commonmessage_type_login_request);
ocommonmsg.set_value(ologinrequest.serializeasstring());
string strcommonmsg = ocommonmsg.serializeasstring();
int nlen = google::protobuf::io::codedoutputstream::varintsize32(strcommonmsg.length());
google::protobuf::uint8 *plen = new google::protobuf::uint8[nlen];
google::protobuf::io::codedoutputstream::writevarint32toarray(strcommonmsg.length(), plen);
string st((const char *)plen, nlen);
st += strcommonmsg;
delete plen;
sendtcpsocket(st.c_str(), st.size());
2. 把protobuffer轉換成 本地字串。
google::protobuf::uint32 uilength = 0;
google::protobuf::io::codedinputstream is((google::protobuf::uint8 *)presvbuf, nrecvbytes);
is.readvarint32(&uilength);
char *pbuf = new char[uilength];
is.readraw(pbuf, uilength);
duolabo::commonmessage ocommonmsg;
string strcommonmsg(pbuf, uilength);
delete pbuf;
if(ocommonmsg.parsefromstring(strcommonmsg))
NodeJS使用protobuffer的簡單示例
1.先定義乙個.proto的檔案,檔名稱,test.proto message column2.使用nodejs 完成對資料的編碼及解碼 const fs require fs const protobuf require protocol buffers nodejs 使用protocol buf...
C 使用protobuffer的一些坑
原文 最後總結一句,使用protobuf,在c 中給string賦值c字串的時候一定要指定長度,因為事實上賦值的內容可能是乙個bytes陣列,而不是乙個標準的 0 結尾的字串。賦值範例如下 char pdata 1024 serialized data int length getdatalengt...
使用ITextSharp生成PDF檔案心得
首先建立乙個winform應用程式,並且新增itextsharp的引用,在按鈕的單擊事件寫上生成pdf的 document docpdf new document pagesize.a4,0,0,0,0 建立乙個pdf文件的物件,設定紙張大小為a4,頁邊距為0 當需要把pdf紙張設定為橫向時,使用p...