进制转换 decimalism(string,number)免费
格式 : [10进制]number = decimalism( 字符串, 2/8/16)
适用场景 : 暂无
function decimalism(a,b) --[[二进制、八进制、十六进制转十进制算法]]local b = b or 10 --[[十进制输入]]local i = 0local t = {["0"]=0,["1"]=1,["2"]=2,["3"]=3,["4"]=4,["5"]=5,["6"]=6,["7"]=7,["8"]=8,["9"]=9,["A"]=10,["B"]=11,["C"]=12,["D"]=13,["E"]=14,["F"]=15,["a"]=10,["b"]=11,["c"]=12,["d"]=13,["e"]=14,["f"]=15} --[[16字符转数值]]local num={["整数"]=0,["小数"]=0}if type(a)=="string" thenfor word in string.gmatch(a, "[^.]+") do --[[按小数点分割]]i = i + 1if i==1 thenlocal t1={}for w in string.gmatch(word, ".") do --[[分割每个数字]]table.insert(t1,1,t[w]) --[[整数倒序插入]]endfor k,v in pairs(t1) donum["整数"]=num["整数"]+v*math.pow(b,k-1) --[[数值*个数-1次幂]]endelseif i==2 thenlocal t1={}for w in string.gmatch(word, ".") do --[[分割每个数字]]table.insert(t1,t[w]) --[[小数正序插入]]endfor k,v in pairs(t1) donum["小数"]=num["小数"]+v*math.pow(b,-k) --[[数值*-个数次幂]]endendendelseprint("不是字符串类型无法转换")endreturn num["整数"]+num["小数"]endlocal num16="7F.8" --[[十六进制]]local num2="101.01" --[[二进制]]print(decimalism(num16,16)) --[[127.5]]print(decimalism(num2,2)) --[[5.25]]
