autostring_1=descriptor->FindValueByNumber(1)->value(); autonumber_1=descriptor->FindValueByName("type1")->number(); 可以得到1的字面string, 在项目如果经常需要字符串和enum 转换可以考虑直接使用protobuf的内置enum
type type_1 = type::type1;int32_ttype_impliticy_convert = type_1;// wrongint32_ttype_impliticy_convert =static_cast<int32_t>(type_1);// ok enum方便,但是如果要转换成string很麻烦,必须一个个匹配。而且与int 互转而且还要考虑索引边界 引出正题,protocbuf 提供的enum 就比较方便了 protobuf...
* enum类型数据会转化为enum的字符串名 * bytes会转化为Base64字符串 * * @author Yang Guanrong * @date 2019/08/20 17:11 */ public class ProtoJsonUtils { public static String toJson(Message sourceMessage) throws IOException { String json = JsonFormat.printer().print(sourceMessage); return j...
protobuf的enum与string转换 c/c++ enum 介绍 说起c/c++ 的enum,⽐起python 真的是⽅便简洁 enum type{ type1 = 0,type2 } enum的元素对应的int 默认从0 开始依次增加,除⾮⼿动指定起始值。int val = type1;assert(val == 0)enum 内的元素是全局的,意味着在其它地⽅直接使⽤type type_...
enum 是 key 和 value 的对应,protobuf.js 允许将 enum 编解码为 key,即 string 类型,也允许编解码为 value,即 number 类型。我曾想直接将 enum 编解码为 string,主要目的是为了数据的自解释,希望研发在开发时看到的是 status:"open" 而不是 status: 0 这样冷冰冰的 number。但是有一个问题,如果编码成 st...
enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { string number = 1; PhoneType type = 2; } repeated PhoneNumber phone = 4; } message是消息体,包含了多个fields(数据项),每一个fields都是key-value类型。
—默认值: string code=2 [default=200]; —预留字段:reserved 6 to 8; —可压缩字段:int32 numbers = 4 [packed=true]; 其他类型: —枚举类型: //枚举类型,必须从0开始,序号可跨越。同一包下不能重名,所以加前缀来区别 enum Role { Role_Admin=0; ...
string, 只能处理ASCII字符 bytes, 用于处理多字节的语言字符 enum, 枚举类型 二、protobuf的使用流程: 下载protobuf压缩包后,解压、配置、编译、安装,即可使用 protoc 命令 查看Linux中是否安装成功: [root@linux] protoc --version libprotoc 3.15.8
enum string “FOO_BAR” 枚举值的名字在proto文件中被指定 map object {“k”: v, …} 所有的键都被转换成string repeated V array [v, …] null被视为空列表 bool true, false true, false string string “Hello World!” bytes base64 string “YWJjMTIzIT8kKiYoKSctPUB+” int32, fixed32, uint...
var Foo_name = map[int32]string{ 0: "DEFAULT_BAR", 1: "BAR_BELLS", 2: "BAR_B_CUE", } var Foo_value = map[string]int32{ "DEFAULT_BAR": 0, "BAR_BELLS": 1, "BAR_B_CUE": 2, } 上面Foo 是enum 的名字。 其它的自己去看文档吧 有用 回复 查看全部 1 个回答 ...