1

在 proto 文件中,我有一个枚举,就像我正在转换它一样 c++ 代码它抛出错误 Integer out of range for field(_G,_P,_L) 。在https://developers.google.com/protocol-buffers/docs/proto3#enum 中说“枚举器常量必须在 32 位整数的范围内”。请帮我解决这个问题

枚举字段是

 pb_EnumTargetType_A = 0x40000000;
 tpb_EnumTargetType_G = 0x88000000;
 tpb_EnumTargetType_P = 0x8C000000;
  tpb_EnumTargetType_L = 0x8A000000;
4

1 回答 1

0

我猜它会将其解释为一个数,因此需要超过 32 位才能编码为有符号整数。将其写为有符号整数似乎可行:

pb_EnumTargetType_A = 0x40000000;
tpb_EnumTargetType_G = -2013265920; // 0x88000000
tpb_EnumTargetType_P = -1946157056; // 0x8C000000
tpb_EnumTargetType_L = -1979711488; // 0x8A000000
于 2018-07-10T07:06:14.453 回答