找回密码
 register

QQ登录

只需一步,快速开始

[*LUA4*] [Lua基础]tonumber函数使用说明 (字符串转数字与进制转换)

[复制链接]

[*LUA4*] [Lua基础]tonumber函数使用说明 (字符串转数字与进制转换)

[复制链接]
Waylee

主题

0

回帖

7459

积分

仙帝

积分
7459
Waylee 2020-12-23 14:10 手机频道 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

本文将详细介绍 tonumber 的具体功能、工作原理以及使用时需要注意的事项。

函数语法

tonumber (e [, base])

e 表示要转换的表达式,可以是数字或字符串。base 是一个可选参数,指定要使用的进制,范围在 2 到 36 之间。

基本用法

tonumber 的主要用途是将参数 e 转换为数值。如果 e 已经是一个数字或可转换为数字的字符串,将返回相应的数值。反正返回 nil
案例

print(tonumber("123"))   -- 输出:123(数字类型)
print(tonumber(456))      -- 输出:456(本身已是数字)
print(tonumber("abc"))   -- 输出:nil(无法转换)

使用 base 参数

tonumber 的一个显著特点是可选的 base 参数,用于指定解释输入时使用的进制。base 可以是 2 到 36 之间的任意整数,允许进行二进制、八进制、十六进制等进制的转换。
进制转换案例

print(tonumber("1010", 2))  -- 输出:10(二进制转十进制)
print(tonumber("1F", 16))   -- 输出:31(十六进制转十进制)

对于大于 10 的进制,字母 AZ(不区分大小写)表示值 10 到 35。例如,A 表示 10,B 表示 11,以此类推,Z 表示 35。
限制

  • 小数和指数部分:当使用 10 进制以外的 base 时,tonumber 仅接受无符号整数。这是因为在这些进制中,tonumber 不支持小数点和指数符号。
  • 无效转换:如果 e 无法根据指定的 base 进行转换,tonumber 会返回 nil
  • 限制案例

    print(tonumber("3.14", 10))   -- 输出:3.14(在 10 进制中有效)
    print(tonumber("3.14", 16))   -- 输出:nil(在 16 进制中无效)

实际应用

  1. 解析用户输入:tonumber 可用于验证并将字符串输入转换为数值,以确保数据类型正确。
  2. 进制转换:可以使用 tonumber 在不同进制之间进行数字转换,这在处理二进制、十六进制数时非常方便,例如在编程和数据处理时。

应用案例

local hexValue = "7F"
local decimal = tonumber(hexValue, 16)
if decimal then
    print("十六进制", hexValue, "对应的十进制值是:", decimal)
else
    print("输入的十六进制字符串无效")
end

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |网站地图|天天打卡

GMT+8, 2024-11-21 20:51 , Processed in 0.032867 second(s), 10 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表