Lua 解析输出在一行

如何将解析的内容在一行中输出?

例如:

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 -> 在一行中。

我该怎么做?

点赞
用户2858170
用户2858170

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(str)

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

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

这将用相应的字符替换input中的每组2个十六进制字符。

2021-06-08 13:38:11