Lua中的字符串拼接

使用 Cheat Engine Lua 中的以下函数可以从四字节值 (DWORD) 中获取 AOB:

local bt = dwordToByteTable(1075734118)
for i, v in ipairs(bt) do
  print(i, string.format('%02x', v))
end

result = [[
1 66
2 66
3 1e
4 40
]]

但我希望结果为 '66 66 1e 40'。

  1. 如何设置正则表达式来实现此结果?

  2. 如果我有一个这样的表:

    cd = { 1075734118, 1075734118, 1075996262, 1076953088, 1076651622, 1076953088, 1076835123 }

如何获取表中每个项的 AOB,输出结果为 no.1?

点赞
用户3670853
用户3670853

发现解决方案:

cd = { 1075734118, 1075734118, 1075996262, 1076953088, 1076651622, 1076953088, 1076835123 }

-- 将一个字节转换为十六进制字符串
function byte2aob(b) return type(b)=='number' and b<256 and b>=0 and string.format('%02X',b) or '??' end
-- 将一个十六进制字符串转换为字节
function aob2byte(a) a = tonumber(a,16) return type(a)=='number' and a <256 and a>=0 and a or -1 end
-- 将一个表中的所有值通过某个函数处理后返回新表
function imap(t,f) local s={} for i=1,#t do s[i]=f(t[i]) end return s end
-- 将一个数字转换为指定大小的字节数组
function n2bt(n,t) t=type(t)=='string' and t or 'dword'  return rawget(_G,t..'ToByteTable')(n) end
-- 将一个字节数组转换为十六进制字符串
function t2aob(t,sep) return table.concat(imap(t,byte2aob),type(sep)=='string' and sep or ' ') end
-- 将一个数字转换为十六进制字符串的字节数组
function n2aob(n,t) return t2aob(n2bt(n,t)) end

-- 遍历 cd 表中的每个值,输出其对应的十六进制字符串的字节数组
for i = 1, #cd do
 print(n2aob(cd[i],'dword'))
end

-- 输出的结果
result = [[
66 66 1E 40
66 66 1E 40
66 66 22 40
00 00 31 40
66 66 2C 40
00 00 31 40
33 33 2F 40
]]
2020-04-05 06:49:16
用户107090
用户107090

尝试运行以下代码:

print((string.format("%08x",1075734118):reverse():gsub("(.)(.)","%2%1 ")))
2020-04-05 11:21:33