Lua Lzo 模組 |
|
此模組主要目標為:
此模組非常容易使用,僅兩個函式。
lzo.compress(str) lzo.decompress(str)
兩個函式都以 Lua 字串為單一參數,並傳回另一個 Lua 字串。傳遞至 lzo.decompress
的字串必須採用特別格式,就像是由 lzo.compress
所產生的,否則 lzo.decompress
會產生錯誤。
以下是一個快速範例,用於開啟檔案,並將其壓縮至另一個檔案。
input = io.open("inputfile", "rb") output = io.open("outputfile", "wb") in_data = input:read("*a") input:close() out_data= lzo.compress(in_data) output:write(out_data) output:close() print(string.len(in_data) .. " bytes compressed to " .. string.len(out_data).. " bytes") -- Let the GC thrash away buffers in_data = nil out_data= nil
miniLZO 內含一個函式,用於使用編碼後壓縮碼 32 演算法運算檢查碼。在新的模組版本中,我已為此函式進行介面處理,因此您可透過以下方式從 Lua 中呼叫它。
lzo.adler(num)
數字(非必要)為總和的初始值;若沒有給予,預設值為 0
。
目前僅提供原始碼。最新版本為 0.4。
您僅需要 Lua 5.0 beta 或更新版本,由於 miniLZO 原始碼內含在套件中。
目前的版本已於 MacOS X 10.2 (Jaguar) 及 Linux 中進行測試。由於 miniLZO 可攜性很高,因此幾乎可以在任何可執行 Lua 的作業系統中進行編譯及執行。
在 lua 5.0 中編譯此程式碼時發生錯誤。這是修改版的 luaLZO_open()... 改成這樣。
int luaLZO_open(lua_State* L) { ASSERT(L); if (lzo_init() != LZO_E_OK) { luaL_error(L, "failed to initialize the mini-LZO (de)compressor"); } static const luaL_reg lzolib[] = { {"comp", luaLZO_compress}, {"decomp", luaLZO_decompress}, {"adler", luaLZO_adler}, {NULL, NULL} }; luaL_openlib(L, "lzo", lzolib, 0); return 0; }
- redpixel (redpixel_at_korea.com)
感謝,我將在下一版本中處理 - AdrianPerez