美文网首页程序员
Lua base tonumber()

Lua base tonumber()

作者: AlbertS | 来源:发表于2017-07-28 17:36 被阅读3760次
转换数字.jpg

前言

重新开始更新的第一天,我们来聊一个轻松一点的函数,tonumber()这是个将指定参数转换成数字的函数,利用这个函数可以做一下数字进制的转换,使用起来比较方便。

内容


tonumber

  • tonumber(e [, base])
  • 解释:这个函数会尝试将它的参数转换为数字,如果参数已经是一个数字或者是一个可以转换成数字的字符串,那么这个函数就会返回转换后的数字,否者返回nil表示无法转换。这个函数有一个额外的参数base可以来指定参数的进制,它的取值范围是[2,36],当这个参数超过10的时候,使用A代表10(大小写都可以),B代表11,以此类推最后Z代表35,默认的这个参数是10,数字能有一个小数部分,也会有一个指数部分,只有可识别的整数可以被接受。

usage

  • 首先我们新建一个文件将文件命名为tonumbertest.lua然后编写代码如下:
-- 定义一个等待转换的列表
local wait_list = { 
    a = 13,
    b = "36",
    c = "52s",
    d = false,
    e = function() print("e") end,
    f = 32,
    g = "A3",
}


-- 转换已经是数字的变量
print("\nwait_list.a =", tonumber(wait_list.a))

-- 转换全是数字的字符串
print("\nwait_list.b =", tonumber(wait_list.b))

-- 转换包含字母的字符串
print("\nwait_list.c =", tonumber(wait_list.c))

-- 转换值为false的变量
print("\nwait_list.d =", tonumber(wait_list.d))

-- 转换值保存函数的变量
print("\nwait_list.e =", tonumber(wait_list.e))


-- 将数字看成二进制来转换=3*2+2 什么玩意,2进制出现3,错误!
print("\nwait_list.f(2) =", tonumber(wait_list.f, 2))

-- 将数字看成四进制来转换=3*4+2
print("wait_list.f(4) =", tonumber(wait_list.f, 4))

-- 将数字看成八进制来转换=3*8+2
print("wait_list.f(8) =", tonumber(wait_list.f, 8))


-- 将数字看成十进制来转换=A*10+3 什么玩意,10进制出现A,错误!
print("\nwait_list.g(10) =", tonumber(wait_list.g, 10))

-- 将数字看成十六进制来转换=A*16+3
print("wait_list.g(16) =", tonumber(wait_list.g, 16))

-- 将数字看成32进制来转换=A*32+3
print("wait_list.g(32) =", tonumber(wait_list.g, 32))
  • 运行结果
base_tonumber.png

总结

  • 观察变量ab的值可知,再不改变函数的第二个参数时,数字和数字字符串可以成功转换成10进制数。
  • 变量bcd因为进制或变量类型等原因无法成功转换而返回nil
  • 变量fg都因为不是指定进制下的合法数字,所以返回nil,比如wait_list.f=32,如果用二进制解析就是错误的,二进制中没有2和3。
  • 变量fg后两种都是正常的转换,通过注释的内容就可以看到,比如wait_list.g="A3",如果把它看成16进制,那么A就是10,所有结果是10*16+3,也就是163。

相关文章

  • Lua base tonumber()

    前言 重新开始更新的第一天,我们来聊一个轻松一点的函数,tonumber()这是个将指定参数转换成数字的函数,利用...

  • Lua tonumber函数

    文字懒得写了,看图片的截图demo例子

  • Lua base type()

    前言 今天学习的这个函数在lua中绝对很常用,用来查询当前变量是什么类型,有点反射机制的意思。那么知道变量是什么类...

  • Lua base tostring()

    前言 前面一篇文章我们介绍了把参数转换成数字的函数,今天来看一个把参数转换成字符串的函数,话说这个函数我在写lua...

  • Lua base setfenv()

    前言 今天来这个函数是用来设置当前运行环境的,也就是和我们之前讲过的getfenv函数是相关的,当时在学习getf...

  • Lua base select()

    前言 今天这个函数看到的时候,第一印象就是想到了c语言中大名鼎鼎的select函数,因为他们函数名是一样的,并且l...

  • Lua base setmetatable()

    前言 记得原来我们总结过一个查询元表的函数getmetatable(), 但是有查询必然会有设置,今天我们就一起来...

  • Lua base pcall()

    前言 作为苦逼的程序猿大周末的时候也必须不能忘记学习,今天我们来看一个调用其他函数的函数,这个函数其实就是给其他函...

  • Lua base rawequal()

    前言 今天这个函数看起来非常的简单,但是却花费了我很长的时间,作用就是比较一下两个值是不是相等,那么时间花在哪了呢...

  • Lua base ipairs()

    前言 今天来看一个老朋友,这个函数在我们使用刚开始学习lua的时候基本就使用过,通常就是在遍历table的时候使用...

网友评论

    本文标题:Lua base tonumber()

    本文链接:https://www.haomeiwen.com/subject/omdflxtx.html