2
我有一個lua文件。它讀取2個文件,一個「腳本」文件,一個「源」文件。 lua文件解釋腳本文件,並用腳本文件中的一些指令更改源文件(內存中)。然後將這個修改的源輸出到輸出文件中。這工作正常,直到某些CR。修改的源將被修改爲具有CRLF而不是CR。這打破了很多東西,我不知道如何解決這個問題。下載lua文件。Lua,CR更正爲CRLF
progargs = {...}
if #progargs ~= 3 then
print("Usage: patch <src> <script> <output>")
return "u didnt do it right"
end
opcodes = {
["\000"] = {
function(args)
local inp=outc:sub(pos,pos):byte()
strt={}
for j=1,#src do
table.insert(strt,outc:sub(j,j))
end
strt[pos]=string.char(inp-args[1])
outc=table.concat(strt,"")
end,
1
},
["\080"] = {
function(args)
local val = args[4] * 1 + args[3] * 256 + args[2] * 65536 + args[1] * 16777216
pos = val+1
end,
4
},
["\255"] = {
function(args)
local inp=outc:sub(pos,pos):byte()
strt={}
for j=1,#src do
table.insert(strt,outc:sub(j,j))
end
strt[pos]=string.char(inp+args[1])
outc=table.concat(strt,"")
end,
1
},
}
srcf = io.open(progargs[1])
src = srcf:read("*a")
srcf:close()
scrf = io.open(progargs[2])
scr = scrf:read("*a")
scrf:close()
i=1
pos=1
outc=src
while i<scr:len() do
local opc = scr:sub(i,i)
if opcodes[opc] ~= nil then
local argc = opcodes[opc][2]
local func = opcodes[opc][1]
local args = {}
for j=1,argc do
table.insert(args,scr:sub(i+j,i+j):byte())
end
func(args)
i=i+argc+1
else
print("unknown opcode xd fuck u")
i=i+1
end
end
print("doned")
outf = io.open(progargs[3], "w")
outf:write(outc)
outf:close()
有關如何解決此問題的任何方法,將不勝感激。
尼斯*未知的操作碼*消息你那裏。 –
@邁克爾只有最好的 – Epic8009