Lua 中 number 轉換各種進位制,以及string串轉number
阿新 • • 發佈:2018-12-31
本文實現了Lua 中 number 轉換各種進位制,以及各種進位制 string 串轉 number。
實現思路:
1. 實現一個 table:_convertTable, 存下數字和字串之間的對應關係
2. 不同進位制之間的轉換:
- 二進位制:採用0和1表示,滿二進一
- 八進位制:採用0~7這八個數表示,滿八進一
- 十進位制:採用0~9這10個數表示,滿十進一
- 十六進位制:用16個阿拉伯數字表示,但我們只有0~9這十個數字,所以我們用A、B、C、D、E、F這五個數字表示10、11、12、13、14、15,字母不區分大小寫,滿十六進一
測試案例:
測試程式碼如下:
function Test:numConvert()
require("app.arithmetic.NumConvert")
local num = 10086
print("---- dec convert to x ----\n")
local text1 = ConvertDec2X(num, 10)
local text2 = ConvertDec2X(num, 2)
local text3 = ConvertDec2X(num, 8)
local text4 = ConvertDec2X(num, 16 )
local text5 = ConvertDec2X(num, 14)
print(string.format("dec %d to dec %s", num, text1))
print(string.format("dec %d to bin %s", num, text2))
print(string.format("dec %d to Oct %s", num, text3))
print(string.format("dec %d to Hex %s", num, text4))
print(string.format("dec %d to 14 %s", num, text5))
print("\n---- string to num ----\n")
local num1 = ConvertStr2Dec(text1, 10)
local num2 = ConvertStr2Dec(text2, 2)
local num3 = ConvertStr2Dec(text3, 8)
local num4 = ConvertStr2Dec(text4, 16)
local num5 = ConvertStr2Dec(text5, 14)
print(string.format("dec:%s to dec %d", text1, num1))
print(string.format("bin:%s to dec %d", text2, num2))
print(string.format("Oct:%s to dec %d", text3, num3))
print(string.format("Hex:%s to dec %d", text4, num4))
print(string.format("14:%s to dec %d", text5, num5))
end
如有錯誤,歡迎指出。
email:dxmdxm1992#gmail.com