Lua 讀取二進(jìn)制文件并轉(zhuǎn)化為十六進(jìn)制

最近在寫 Lua 腳本,需要讀取二進(jìn)制文件并轉(zhuǎn)化為十六進(jìn)制的字符串,C語言讀文件,返回的是字符串類型,Lua 返回的也是字符串類型(用的時候忘記去查類型了,導(dǎo)致這個地方浪費了很長的時間。。。),由于找解決方法找了蠻長時間的,所有在這里先記錄一下。

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

有一個小問題,順便記錄一下,在讀取了二進(jìn)制文件后,本想用print打印看看內(nèi)容有沒有被讀出來,結(jié)果只打印了一部分,用 notepad++ 打開發(fā)現(xiàn),文件有很多 NUL 的字符,原因是 print 在遇到 NUL 就結(jié)束打印了,囧o(╯□╰)o

十六進(jìn)制轉(zhuǎn)二進(jìn)制可以參考這個:Lua小程序:十六進(jìn)制字符串和二進(jìn)制數(shù)據(jù)間的轉(zhuǎn)換


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,334評論 0 17
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,564評論 19 139
  • Nginx API for Lua Introduction ngx.arg ngx.var.VARIABLE C...
    吃瓜的東閱讀 6,096評論 0 5
  • 01 小V是我朋友的朋友,曾有過一次交談。還記得初次見面時對她的印象頗為深刻,大大方方為人爽快。但令我意想不到的是...
    聆聽休閑曲閱讀 573評論 2 5
  • 無事容易生非,這話被我今天淋漓盡致地演繹了一番。 今早沒有早讀,課也是下午的,孩子起床走了后,我準(zhǔn)備再睡一會,卻翻...
    暫且這樣吧閱讀 304評論 0 0

友情鏈接更多精彩內(nèi)容