找回密码
 register

QQ登录

只需一步,快速开始

搜索
查看: 493|回复: 0

[游戏教程] LUA 十进制转32进制

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:296
  • 打卡月天数:17
  • 打卡总奖励:294
  • 最近打卡:2025-09-18 00:23:33
Waylee 发表于 2024-2-8 19:44 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×
这个函数首先检查是否为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))  -- 一个较大的数值示例


您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 ( 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 ) |网站地图|天天打卡

GMT+8, 2025-9-18 14:56 , Processed in 0.091698 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表