在一行中解析Lua输出

3
如何从一行解析的内容中获取输出?
例如:
local input  = "56303031"
length = string.len(input)

for i = 1, length, 2 do 
  d = string.sub(input, i , i+1)
  a = string.char(tonumber(d, 16))
  print(a)
end

这将打印出: enter image description here 但我希望它以这样的方式打印出来:V001->一行。
我该怎么做?

1
可能是 https://dev59.com/jmw05IYBdhLWcg3wmC0o 的重复问题。 - lhf
1个回答

3

print 命令会在结尾添加一个换行符。建议使用 io.write 命令来代替。

local input  = "56303031"
local length = string.len(input)

for i = 1, length, 2 do 
  local d = string.sub(input, i , i+1)
  local a = string.char(tonumber(d, 16))
  io.write(a)
end

或者在结尾处组合一个字符串并打印出来:

local input  = "56303031"
local length = string.len(input)
local str = ""
for i = 1, length, 2 do 
  local d = string.sub(input, i , i+1)
  local a = string.char(tonumber(d, 16))
  str = str .. a
end
print(a)

或者你可以使用gsub在打印之前修改字符串:

local input  = "56303031"
print((input:gsub("%x%x", function (x) return string.char(tonumber(x, 16)) end)))

这将用每组2个十六进制字符所代表的字符替换 input 中的字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接