Lua 读取二进制文件并转化为十六进制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua 读取二进制文件并转化为十六进制相关的知识,希望对你有一定的参考价值。

参考技术A 最近在写 Lua 脚本,需要读取二进制文件并转化为十六进制的字符串,C语言读文件,返回的是字符串类型,Lua 返回的也是字符串类型(用的时候忘记去查类型了,导致这个地方浪费了很长的时间。。。),由于找解决方法找了蛮长时间的,所有在这里先记录一下。

local function readAll(filePath)

--

local f = assert(io.open(filePath, "rb"))

local content = f:read("*all")

f:close()

return content

end

local function bytesToHexStr(filePath)

--

local content = readAll(filePath)

local result = ""

local len = string.len(content)

for i = 1, len do

local charcode = tonumber(string.byte(content, i, i));

local hexstr = string.format("%02X", charcode);

result = result .. hexstr

end

return result

end

有一个小问题,顺便记录一下,在读取了二进制文件后,本想用print打印看看内容有没有被读出来,结果只打印了一部分,用 notepad++ 打开发现,文件有很多 NUL 的字符,原因是 print 在遇到 NUL 就结束打印了,囧o(╯□╰)o

十六进制转二进制可以参考这个: Lua小程序:十六进制字符串和二进制数据间的转换

以上是关于Lua 读取二进制文件并转化为十六进制的主要内容,如果未能解决你的问题,请参考以下文章

labVIEW将字符串解释成十六进制并转化为十进制

无法读取Lua 5.1上的二进制文件的每个字节

lua拷贝二进制文件的方法

怎样使用lua读取文件夹内所有文件?

使用FFI将二进制数据读取为Lua号

ajax接收二进制文件并转化成int,string等