openresty:将 int64 转换为字符串
2017-4-30 4:48:7
收藏:0
阅读:163
评论:1
我正在使用带有 Lua 5.1.4 的 openresty/1.7.7.2。我在请求中接收到 int64,并且我将其 字符串 格式保存在数据库中(无法更改数据库模式或请求格式)。我无法将它们匹配。
local i = 913034578410143848 --请求
local p = "913034578410143848" -- 存储在数据库中
print(p==tostring(i)) -- 返回 false
print(i%10) -- 返回 0 ..这也不起作用
是否有一种方法可以将 int64 转换为字符串,反之亦然?
更新:
我从 protobuf 对象中获得 i。proto 文件将 i 描述为 int64。我使用 pb4lua 库用于 protobuf。
ngx.req.read_body()
local body = ngx.req.get_body_data()
local request, err = Request:load(body)
local i = request.id
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

Lua 5.1 不能表示大于
2^53的整数值。 数字字面量也不例外。因此,你不能简单地写下local i = 913034578410143848。 但是,LuaJIT 可以表示类似于带盒子的 int64 值。 此外,还存在处理大数的 Lua 库。例如,bn库。 我不知道你的 pb4lua 如何处理这个问题。 例如,lua-pb库使用 LuaJIT 带盒子的值。 并且提供了一种指定用户定义回调来生成 int64 值的方法。 首先,我建议确定你的i值的真实类型(使用type函数)。 一切都取决于它。 如果它是number,那么我认为 pb4lua 只是丢失了一些信息。 也许它只返回string类型,因此你可以将其作为字符串进行比较。 如果它提供了 LuaJIT cdata,则这是将字符串转换为 int64 值的基本函数。local function to_jit_uint64(str) local v = tonumber(string.sub(str, 1, 9)) v = ffi.new('uint64_t', v) if #str > 9 then str = string.sub(str, 10) v = v * (10 ^ #str) + tonumber(str) end return v end