Lua 中如何去除浮点数,并保持整数值不变

我正在编写一个自定义字节码,当我对其进行解码时,会添加这些 .0 小数:

\114.0\101.0\113.0\117.0\105.0\114.0\101.0\

我已经尝试使用 math.floor 和 math.ceil,但它们会改变 .0 前面的数字

那么我该如何修复它呢?

我的当前代码如下:

local OVal = math.random(1, 999)
local SVal = math.random(1, 999)
local TVal = math.random(1, 999)

local function customEnc(STR)
local currentVar = ""
local strings = {}
STR:gsub(".", function(c)
    if c == [[\]] then
        local newVar = tonumber(currentVar)
        if newVar == nil then
        else
            newVar = newVar * OVal /SVal
            table.insert(strings, tostring(newVar))
            newVar = ""
        end
        currentVar = ""
    else
        currentVar = currentVar .. c
    end
end)
local newString = ""
for i,v in pairs(strings) do
    newString = newString .. [[\]] .. v
end
newString = newString .. [[\]]
return newString
end

local function customDec(STR)
    local currentVar = ""
    local strings = {}
    STR:gsub(".", function(c)
        if c == [[\]] then
            local newVar = tonumber(currentVar)
            if newVar == nil then
            else
                newVar = newVar / OVal *SVal
                table.insert(strings, tostring(newVar))
                newVar = ""
            end
            currentVar = ""
        else
            currentVar = currentVar .. c
        end
    end)
    local newString = ""
    for i,v in pairs(strings) do
        newString = newString .. [[\]] .. v
    end
    newString = newString .. [[\]]
    return newString
end
点赞
用户7396148
用户7396148

你可以使用带有格式字符串 %.0fstring.format 来格式化数字,以删除不需要的小数位:

for i,v in pairs(strings) do
  newString = newString .. [[\]] .. string.format("%.0f",v)
end

另外,我要指出,你在这里使用的是 pairs 而不是 ipairs,因此你的顺序是不确定的,这意味着无法保证该过程可以被逆转。

2021-07-16 20:39:01