2024-12-12 08:00:06

Lua字符串到int

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

我有一个这样的字符串:

a = "10"

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


当前回答

更清晰的选择是使用tonumber。

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

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

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

其他回答

更清晰的选择是使用tonumber。

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

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

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

假设你想转化为数字的字符串在变量S中

a=tonumber(S)

如果S中有数字且只有数字,它将返回一个数字, 但如果有任何字符不是数字(浮点数的句点除外) 它会返回nil

需要注意的是,math.floor()总是向下舍入,因此对于负浮点值不会产生合理的结果。

例如,表示为整数的-10.4通常会被截断或舍入为-10。然而math.floor()的结果是不一样的:

math.floor(-10.4) => -11

对于使用类型转换的截断,以下辅助函数将工作:

function tointeger( x )
    num = tonumber( x )
    return num < 0 and math.ceil( num ) or math.floor( num )
end

参考:http://lua.2524044.n2.nabble.com/5-3-Converting-a-floating-point-number-to-integer-td7664081.html

Lua数字类型是双精度类型,在luaconf中实现。H详细说明 一般有两种选择:

[推荐使用]5.3版本的Lua脚本中包含全局变量。Lua文件,其中包括tonumber()和tostring()方法,可以实现数字和字符串的转换。 tointeger()也可以使用此方法将其转换为数字。

但是根据你的实际场景,如果只是为了计算,可以根据这个操作符号来转换Lua。如

  s = "1" + 2; -- lua will convert "1" to 1
  print(s)

  s1 = "e" + 3; -- error
  print(s1)

更多关于lua的信息,可以查看lua官方文档

希望对您有用,期待您的回复,期待与您进一步沟通!

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