备忘
1. string默认不支持gbk,用bytes类型代替,传递二进制
2. 非string类型的序列化,反序列化:
bool SerializeToArray(void * buf, int & len)//len长度字段 需要传入可用buf大小,若太小 会失败
{
bool bret = pb_obj.SerializeToArray(buf, len);
if ( bret )
{
//TODO is there any better way to do this?
len = pb_obj.ByteSize();
}
return bret;
}
bool UnSerializeFromArray(const void * buf, int len)
{
bool bret = pb_obj.ParseFromArray(buf, len);
return bret;
}
3. optional字段不要放在message的中间进行定义