lua-protobuf
lua-protobuf copied to clipboard
编码uint64的值时,当值很大时编码失败
类型定义:
message tianmo_info
{
optional int32 id = 1[default = 0];
optional int32 distance = 2[default = 0];
optional uint64 hp = 3[default = 0];
}
测试代码:
local pb = require "pb"
pb.option "decode_default_message"
pb.option "encode_default_values"
pb.option "decode_default_array"
local msg = "tianmo_info"
local tianmo = {
id = 1,
distance = 100,
hp = 9372260000000000000,
}
pb.encode(msg, tianmo)
执行出错:
\star_pb.lua:28: integer format error: '9.37226e+18' stack traceback: [C]: in function 'pb.encode' .\star_pb.lua:28: in main chunk [C]: in ?
我追踪到pb.c的代码,lua_tointegerx 返回的是0,转换失败!
请问我该怎么做
Lua只支持有符号64位数,你可以使用字符串"#9...",会自动转成64位数字编码
麻烦问一下。大家取int64 值的时候。如何把表示范围外 按string获取到