Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 将整数值转换为字符串_String_Lua_Ascii - Fatal编程技术网

String 将整数值转换为字符串

String 将整数值转换为字符串,string,lua,ascii,String,Lua,Ascii,下面是将整数值编码为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

下面是将整数值编码为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作为分隔符

  • 无论何时创建具有类似名称的变量(例如代码中的
    code
    value
    ),都要使用
    local
  • 使用
    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
    

    单词是分隔符:)谢谢。我是Lua Newb。Python将返回一个整数。一旦我有15个代表,我会投你一票。我丢失了我的旧帐户:S@Dick,大多数Lua实现既没有整数类型,也没有整数操作。除非您发现其他情况,否则可以假设
    number
    类型实现为IEEE-754 double。