2024-12-12 08:00:06

Lua字符串到int

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

我有一个这样的字符串:

a = "10"

我想把它转换成10,这个数字。


当前回答

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

其他回答

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()将字符串转换为数字,可以是浮点数或int型。

例如:tonumber("11")——返回:11

Lua中的所有数字都是浮点数(编辑:Lua 5.2或以下)。如果你真的想转换为“int”(或者至少复制这个行为),你可以这样做:

local function ToInteger(number)
    return math.floor(tonumber(number) or error("Could not cast '" .. tostring(number) .. "' to number.'"))
end

在这种情况下,您可以显式地将字符串(或者实际上,无论它是什么)转换为一个数字,然后截断该数字,就像Java中的(int)强制转换一样。

编辑:这在Lua 5.3中仍然有效,即使Lua 5.3有实整数,因为math.floor()返回一个整数,而如果number是一个浮点数,那么像number // 1这样的操作符仍然会返回一个浮点数。

您可以创建一个访问器,以保持其中的“10”为int 10。

例子:

x = tonumber("10")

如果你输出x变量,它将输出一个int 10而不是"10"

和Python进程一样

X = int("10")

谢谢。

更清晰的选择是使用tonumber。

从5.3.2开始,这个函数将自动检测(有符号的)整数、浮点数(如果存在一个点)和十六进制(整数和浮点数,如果字符串以"0x"或"0x"开头)。

以下片段较短,但不相等:

A + 0——由于+的工作方式,强制转换为float。 | 0——(|是位或)强制转换为整数。 ——然而,不像“数学”。Tointeger ',如果失败就会出错。