gpt4 book ai didi

string - 将整数值转换为字符串

转载 作者:行者123 更新时间:2023-12-05 01:04:08 24 4
gpt4 key购买 nike

下面是将整数值编码为 ASCII 字符串的代码。它是用 Python 编写的,在我的测试中运行良好。

def encode(value):
code = ''
while value%254 != value:
code = code + chr(value%254)
value = value/254
code = code + chr(value)
return code

def decode(code):
value = 0
length = len(code)
for i in range(0, length):
print code[i]
value = value * 254 + ord(code[length-1-i])
return value


code = encode(123456567)
print code

print decode(code)

但是,当我在 Lua 中尝试相同的实现时,编码和解码的值不匹配。这是我的 Lua 版本:
function encode(value)
code = ''
while value%254 ~= value do

code = code .. string.char(value%254)
value = value/254
end
code = code .. string.char(value)
return code
end

function decode(code)
value = 0
code = string.reverse(code)
for i=1, #code do
local c = code:sub(i,i)
print(c)
value = value*254 + string.byte(c)
end
return value
end

code = encode(2555456)

print(decode(code))

请注意,我正在尝试使用 mod 254,以便我可以使用 255 作为分隔符。

最佳答案

  • 使用 local每当您创建具有相似名称的变量时(例如,代码中的 codevalue)。
  • 当您使用 value = value / 254 ,您只需要取除法的整数部分,而不是整数。

  • 所以:
    function encode(value)
    local code = ''
    while value % 254 ~= value do
    code = code .. string.char( value % 254 )
    value = math.floor( value / 254 )
    end
    code = code .. string.char( value )
    return code
    end

    function decode(code)
    local value = 0
    code = code:reverse()
    for i = 1, #code do
    local c = code:sub( i, i )
    value = value * 254 + c:byte()
    end
    return value
    end

    关于string - 将整数值转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23637641/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com