轉(zhuǎn)換數(shù)字.jpg
前言
重新開(kāi)始更新的第一天渗鬼,我們來(lái)聊一個(gè)輕松一點(diǎn)的函數(shù)览露,tonumber()
這是個(gè)將指定參數(shù)轉(zhuǎn)換成數(shù)字的函數(shù),利用這個(gè)函數(shù)可以做一下數(shù)字進(jìn)制的轉(zhuǎn)換譬胎,使用起來(lái)比較方便差牛。
內(nèi)容
tonumber
- tonumber(e [, base])
- 解釋:這個(gè)函數(shù)會(huì)嘗試將它的參數(shù)轉(zhuǎn)換為數(shù)字,如果參數(shù)已經(jīng)是一個(gè)數(shù)字或者是一個(gè)可以轉(zhuǎn)換成數(shù)字的字符串堰乔,那么這個(gè)函數(shù)就會(huì)返回轉(zhuǎn)換后的數(shù)字偏化,否者返回nil表示無(wú)法轉(zhuǎn)換。這個(gè)函數(shù)有一個(gè)額外的參數(shù)base可以來(lái)指定參數(shù)的進(jìn)制镐侯,它的取值范圍是[2,36]侦讨,當(dāng)這個(gè)參數(shù)超過(guò)10的時(shí)候,使用
A
代表10(大小寫(xiě)都可以)苟翻,B
代表11韵卤,以此類推最后Z
代表35,默認(rèn)的這個(gè)參數(shù)是10崇猫,數(shù)字能有一個(gè)小數(shù)部分沈条,也會(huì)有一個(gè)指數(shù)部分,只有可識(shí)別的整數(shù)可以被接受邓尤。
usage
- 首先我們新建一個(gè)文件將文件命名為tonumbertest.lua然后編寫(xiě)代碼如下:
-- 定義一個(gè)等待轉(zhuǎn)換的列表
local wait_list = {
a = 13,
b = "36",
c = "52s",
d = false,
e = function() print("e") end,
f = 32,
g = "A3",
}
-- 轉(zhuǎn)換已經(jīng)是數(shù)字的變量
print("\nwait_list.a =", tonumber(wait_list.a))
-- 轉(zhuǎn)換全是數(shù)字的字符串
print("\nwait_list.b =", tonumber(wait_list.b))
-- 轉(zhuǎn)換包含字母的字符串
print("\nwait_list.c =", tonumber(wait_list.c))
-- 轉(zhuǎn)換值為false的變量
print("\nwait_list.d =", tonumber(wait_list.d))
-- 轉(zhuǎn)換值保存函數(shù)的變量
print("\nwait_list.e =", tonumber(wait_list.e))
-- 將數(shù)字看成二進(jìn)制來(lái)轉(zhuǎn)換=3*2+2 什么玩意拍鲤,2進(jìn)制出現(xiàn)3,錯(cuò)誤汞扎!
print("\nwait_list.f(2) =", tonumber(wait_list.f, 2))
-- 將數(shù)字看成四進(jìn)制來(lái)轉(zhuǎn)換=3*4+2
print("wait_list.f(4) =", tonumber(wait_list.f, 4))
-- 將數(shù)字看成八進(jìn)制來(lái)轉(zhuǎn)換=3*8+2
print("wait_list.f(8) =", tonumber(wait_list.f, 8))
-- 將數(shù)字看成十進(jìn)制來(lái)轉(zhuǎn)換=A*10+3 什么玩意季稳,10進(jìn)制出現(xiàn)A,錯(cuò)誤澈魄!
print("\nwait_list.g(10) =", tonumber(wait_list.g, 10))
-- 將數(shù)字看成十六進(jìn)制來(lái)轉(zhuǎn)換=A*16+3
print("wait_list.g(16) =", tonumber(wait_list.g, 16))
-- 將數(shù)字看成32進(jìn)制來(lái)轉(zhuǎn)換=A*32+3
print("wait_list.g(32) =", tonumber(wait_list.g, 32))
- 運(yùn)行結(jié)果
base_tonumber.png
總結(jié)
- 觀察變量
a
和b
的值可知景鼠,再不改變函數(shù)的第二個(gè)參數(shù)時(shí),數(shù)字和數(shù)字字符串可以成功轉(zhuǎn)換成10進(jìn)制數(shù)。 - 變量
b
铛漓、c
溯香、d
因?yàn)檫M(jìn)制或變量類型等原因無(wú)法成功轉(zhuǎn)換而返回nil
。 - 變量
f
和g
都因?yàn)椴皇侵付ㄟM(jìn)制下的合法數(shù)字浓恶,所以返回nil玫坛,比如wait_list.f=32
,如果用二進(jìn)制解析就是錯(cuò)誤的包晰,二進(jìn)制中沒(méi)有2和3湿镀。 - 變量
f
和g
后兩種都是正常的轉(zhuǎn)換,通過(guò)注釋的內(nèi)容就可以看到伐憾,比如wait_list.g="A3"
勉痴,如果把它看成16進(jìn)制,那么A就是10树肃,所有結(jié)果是10*16+3蒸矛,也就是163。