String 将整数值转换为字符串
下面是将整数值编码为ASCII字符串的代码。它是用Python编写的,通过我的测试可以很好地工作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
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。