这个函数首先检查是否为0,因为0在任何进制中都是0。然后,它定义了一个包含32进制数位的字符串digits。通过循环,函数计算输入数值num的每一个32进制数位,将其添加到结果字符串base32的前面,直到num变为0。每次循环中,num都被除以32,并向下取整以准备下一次迭代。
这种方法可以轻松地修改以支持其他的基数转换,只需调整digits字符串和除法的基数即可。 function decToBase32(num)
if num == 0 then return "0" end
local base32 = ""
local digits = "0123456789abcdefghijklmnopqrstuv"
while num > 0 do
local remainder = num % 32
base32 = string.sub(digits, remainder + 1, remainder + 1) .. base32
num = math.floor(num / 32)
end
return base32
end
-- 示例
print(decToBase32(10)) -- 输出: a
print(decToBase32(31)) -- 输出: v
print(decToBase32(32)) -- 输出: 10
print(decToBase32(123456789)) -- 一个较大的数值示例
|