如何在Lua中将字符串转换为整数?
我有一个这样的字符串:
a = "10"
我想把它转换成10,这个数字。
如何在Lua中将字符串转换为整数?
我有一个这样的字符串:
a = "10"
我想把它转换成10,这个数字。
当前回答
更清晰的选择是使用tonumber。
从5.3.2开始,这个函数将自动检测(有符号的)整数、浮点数(如果存在一个点)和十六进制(整数和浮点数,如果字符串以"0x"或"0x"开头)。
以下片段较短,但不相等:
A + 0——由于+的工作方式,强制转换为float。 | 0——(|是位或)强制转换为整数。 ——然而,不像“数学”。Tointeger ',如果失败就会出错。
其他回答
可以通过在算术运算中使用字符串(如a= "10" + 0)强制进行隐式转换,但这并不像显式使用tonumber那样清楚或清晰。
自从lua 5.3以来,有了一个新的数学。将字符串转换为整数的Tointeger函数。只是整数,没有浮点数。
例如:
print(math.tointeger("10.1")) -- nil
print(math.tointeger("10")) -- 10
如果你想转换整数和浮点数,tonumber函数更合适。
使用tonumber函数。如a = tonumber("10")。
Tonumber (e [, base])
Tonumber有两个参数,第一个是转换为数字的字符串,第二个是e的进制。
返回值tonumber以10为基数。
如果没有提供基数,它将数字转换为以10为基数。
> a = '101'
> tonumber(a)
101
如果提供了base,则将其转换为给定的base。
> a = '101'
>
> tonumber(a, 2)
5
> tonumber(a, 8)
65
> tonumber(a, 10)
101
> tonumber(a, 16)
257
>
如果e包含无效字符,则返回nil。
> --[[ Failed because base 2 numbers consist (0 and 1) --]]
> a = '112'
> tonumber(a, 2)
nil
>
> --[[ similar to above one, this failed because --]]
> --[[ base 8 consist (0 - 7) --]]
> --[[ base 10 consist (0 - 9) --]]
> a = 'AB'
> tonumber(a, 8)
nil
> tonumber(a, 10)
nil
> tonumber(a, 16)
171
我的回答是考虑到Lua5.3
local a = "10"
print(type(a))
local num = tonumber(a)
print(type(num))
输出
string
number