美文网首页程序员
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()

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