如何在 Lua 中将整数转换为索引列表

我对 Lua 还不是很熟悉,我试图将一个整数转换为一个索引数组,但是找不到一个稳定的方法来实现这一点。

以下是两个我试图实现的示例:

输入: 0x11
期望的输出: [0, 4]

输入: 0x29
期望的输出: [0, 3, 5]
点赞
用户7509065
用户7509065

如果你的 Lua 版本是 5.3 及以上,下面的代码可用:

local function oneBits(n)
    local i, rv = 0, {}
    while n ~= 0 do
        if n & 1 == 1 then
            table.insert(rv, i)
        end
        i = i + 1
        n = n >> 1
    end
    return rv
end
2020-11-23 16:20:36