【语法】
一、机制原理
抛个坑:tonumber("0x1F") 结果是多少?在 5.1 里它返回 nil——不带进制参数的解析认不出 0x 前缀,正确姿势是 tonumber("1F", 16),得 31。tonumber 还有个重要脾气:解析不了不报错,而是返回 nil——空串、混字母的串全都安静地变成 nil,紧跟着的算术运算就会炸出 arithmetic on a nil value。所以转换必配兜底:判 nil 给默认值,浮点转整补 math.floor,进制串显式传进制参数。
二、错误写法
-- 错误:nil 直接参与运算,当场报错
local v = tonumber(input)
local total = v + 1
三、正确写法
local function toInt(s, dft)
local v = tonumber(s)
if v == nil then return dft end
return math.floor(v)
end
local p = getplayerbyname("num01")
sendmsg(p, 1, tostring(tonumber("1F", 16))
.. "/" .. tostring(toInt("12a", 0)))
四、引擎验证
十六进制串带进制参数得 31;脏串走兜底得 0 不报错;浮点串经 floor 归整。
五、FAQ
问:进制参数范围?
答:2 到 36,字母作数字位时自动启用。
问:tonumber(3.7) 会截整吗?
答:不会,数字原样返回,截整要显式 floor。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 狮子搏兔的分量在"搏"字上:扑一只兔子也用十成力,扑完必然力竭。今天拆狮子搏兔的表现,看"全力一击换长硬直"这…
【游戏功能】 指南车是古代的导航黑科技:车怎么转,车上小人的手永远指着南边——齿轮抵消了车身的每一度转向。今天拆指南车的表现…
【游戏功能】 化骨绵掌的狠不在掌落而在掌后:一掌拍上去毫发无伤,三息之后内伤发作——伤是延迟到账的。今天拆化骨绵掌的表现,看…
【游戏功能】 迷魂雾的凶险是"看不清":狼怪就在雾里,轮廓时隐时现——出手全凭半秒前的记忆。今天拆迷魂雾的表现,看"能见度"…
【游戏功能】 吹画是国画里的即兴流派:一滴墨落在宣纸上,嘴巴一吹墨就分出枝杈——枝杈的走向全靠气息的角度,吹完的墨枝谁也没法…
【游戏功能】 拆一行代码: 下珠满五提一颗上珠——算盘的进位规则浓缩成这一行。今天讲算盘的表现,看"进位"这个抽象概念怎么被…