Lua Pack |
|
這是一個打包及解包二進位資料的簡單 Lua 模組。packlib
為 Luiz Henrique de Figueiredo 的打包函式庫 [1] 的延伸。我將範本格式修改為符合我自己的需求,並轉換成 Lua 模組(參閱 LuaBinaryModules)。
它提供了兩個函式:bpack 和 bunpack。
bpack 的呼叫方式如下:bpack(F,x1,x2,...),其中 F 是一個字串,說明如何詮釋和格式化值 x1、x2 等。F 中的每個字母會讀取其中一個值。bpack 所理解的字母代碼:
bpack 傳回一個 (二進位) 字串,其中包含按照 F 中所述封裝的值。
bunpack 的呼叫方式如下:bunpack(s,F,[init]),其中 s 是包含由 pack 封裝的資料的 (二進位) 字串,F 是說明如何從 s 讀取資料的字串,且選擇性的 init 標記在 s 中讀取值的位置。
bunpack 傳回 F 中每個字母的一個值(字母代碼和 bpack 相同);bpack 也會傳回 s 中下一個未讀取位置的位置,此位置可用於 bunpack 後續呼叫的 init 位置。如果 bunpack 傳回的位置超過 s 的尾端,就當然不應該再呼叫 bunpack,否則會引發錯誤。
以下程式碼讀取 tga 檔案的標題
header = read( file, 18 ) id_length, colormap_type, image_type, colormap_index, colormap_length, colormap_size, x_origin, y_origin, width, height, pixel_size, attributes, num = bunpack( header, 'CCCSSCSSSSCC' )
[Win32 DLL] | [GNU/Linux-i386 .so]
注意:win32 二進位檔案已使用 [MinGW] gcc 編譯器建置。
注意:win32 二進位檔案已更新為使用 lua-4.0.dll,而非靜態連結。
可以在下列位置找到更新的來源(適用於 5.0 和 5.1):[http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/]