找回密码
 register

QQ登录

只需一步,快速开始

查看: 419|回复: 0

[游戏教程] lua 十进制转2进制

[复制链接]

[游戏教程] lua 十进制转2进制

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:95
  • 打卡月天数:18
  • 打卡总奖励:95
  • 最近打卡:2025-01-20 23:11:04
Waylee

主题

0

回帖

1万

积分

仙帝

积分
12398
Waylee 2024-2-8 19:53 | 显示全部楼层 |阅读模式

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

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

×
function decToBin(num)
    if num == 0 then return "0" end

    local bin = ""
    while num > 0 do
        local remainder = num % 2
        bin = remainder .. bin
        num = math.floor(num / 2)
    end

    return bin
end

-- 示例
print(decToBin(10))  -- 输出: 1010
print(decToBin(255)) -- 输出: 11111111
print(decToBin(256)) -- 输出: 100000000


这个函数decToBin接受一个十进制数num作为输入,并初始化一个空字符串bin来构建二进制表示。在while循环中,它不断地将num除以2,并将余数添加到bin字符串的前面。这是因为二进制数是从右到左构建的(即最低位到最高位)。循环继续直到num变为0。
每次循环中,使用num % 2来获取当前num除以2的余数(0或1),这就是当前的二进制位。然后,使用math.floor(num / 2)来更新num,准备下一次迭代。math.floor函数确保了即使在Lua中默认的浮点数运算下,我们也能得到正确的整数除法结果。
这个简单的函数能够处理任何非负整数的十进制到二进制的转换。如果需要处理负数,二进制表示将更加复杂,通常涉及到补码表示,这在函数的这个基本形式中没有直接处理。



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

本版积分规则

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

GMT+8, 2025-1-21 01:54 , Processed in 0.097791 second(s), 7 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

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