LUA中使用二进制文件的异或操作

LUA中使用二进制文件的异或操作,lua,xor,Lua,Xor,我试图通过将二进制文件作为输入来创建一个XOR二进制文件,执行XOR操作并写入另一个文件,并且一旦完成,需要通过读取XOR_文件作为输入并写入文件来反转整个过程,这将与原始文件相同 我曾尝试读取十六进制格式的文件,但无法转换结构并将其写入新文件 local out = assert(io.open(arg[2], "wb")) local f = assert(io.open(arg[1], "rb")) local block = 10 while true do local bytes

我试图通过将二进制文件作为输入来创建一个XOR二进制文件,执行XOR操作并写入另一个文件,并且一旦完成,需要通过读取XOR_文件作为输入并写入文件来反转整个过程,这将与原始文件相同

我曾尝试读取十六进制格式的文件,但无法转换结构并将其写入新文件

local out = assert(io.open(arg[2], "wb"))
local f = assert(io.open(arg[1], "rb"))
local block = 10
while true do
  local bytes = f:read(block)
  if not bytes then break end
  for b in string.gmatch (bytes, ".") do
    local value = string.format("%02X ", string.byte(b))
    io.write(value)
    out:write(value)               
  end          
end
assert(out:close())

那么什么问题呢?LUA5.3支持位操作。Lua 5.2/LuaJIT具有位库。对于Lua5.1,您必须使用外部库。此外,您还可以在不使用gmatch的情况下使用
string.byte
-签出docs@moteus,因为我可以转换为十六进制并将其写入文件,我不能做的是,将十六进制值转换回正常值并将其写入文件
tonumber('AF',16)