- 论坛徽章:
- 5
|
回复 52# __BlueGuy__
亲爱的BlueGuy同学,为什么在2012年的今天,你还在用06年才推出的Lua 5.1呢?这年头,大家都是用5.2的…………
load是5.2的函数………………
算了,给你一个5.1版本的吧……我都不知道我自己这里跑不跑的了……- io.input "in.txt"
- -- io.output "out.dat"
- local input = io.read "*a"
- :gsub("^char%s*%w+%b[]%b[]%s*=%s*", "")
- local res = assert(loadstring("return "..input))()
- local function write_binary(f)
- local function write_short(n)
- io.write(("%c%c"):format(math.floor(n/256)%256, n%256))
- end
- local function write_byte(n)
- io.write(("%c"):format(n%256))
- end
- f(write_short, write_byte)
- end
- local function write_text(f)
- local t = {}
- local function write_short(n)
- t[#t+1] = math.floor(n/256)%256
- t[#t+1] = n%256
- end
- local function write_byte(n)
- t[#t+1] = n%256
- end
- f(write_short, write_byte)
- for i, v in ipairs(t) do
- io.write(("%02X"):format(v))
- if i % 16 == 0 then
- io.write '\n'
- elseif i % 2 == 0 then
- io.write ' '
- end
- end
- io.write '\n'
- end
- ("binary" and write_binary or write_text) (
- function(write_short, write_byte)
- write_short(#res)
- for i, v in ipairs(res) do
- write_short(#v)
- for i, v in ipairs(v) do
- write_byte(v)
- end
- end
- end)
- -- cc: cc='lua51' run+='< in.txt'
复制代码 这个程序会读同一个目录下的in.txt文件。输出到终端,如果解注释掉第二行,则输出到out.txt,如果在"binary"前面加一个not,则直接输出文本的16进制数字串。 |
|