2024-12-12 08:00:06

Lua字符串到int

如何在Lua中将字符串转换为整数?

我有一个这样的字符串:

a = "10"

我想把它转换成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

其他回答

自从lua 5.3以来,有了一个新的数学。将字符串转换为整数的Tointeger函数。只是整数,没有浮点数。

例如:

print(math.tointeger("10.1")) -- nil
print(math.tointeger("10")) -- 10

如果你想转换整数和浮点数,tonumber函数更合适。

使用tonumber函数。如a = tonumber("10")。

local a = "10"
print(type(a))
local num = tonumber(a)
print(type(num))

输出

   string                                                                                                                                                                          
   number
Lua 5.3.1  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> math.floor("10");
10
> tonumber("10");
10
> "10" + 0;
10.0
> "10" | 0;
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