Lua Pack

lua-users home
wiki


[!] 版本说明: 以下代码适用于旧版本的 Lua,Lua 4。它在 Lua 5 下无法运行。

描述

这是一个简单的 Lua 模块,用于打包和解包二进制数据。packlib 基于 Luiz Henrique de Figueiredo 的 pack 库 [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 而不是静态链接它

源代码

[packlib.zip]

[packlib.tar.gz]

更新后的源代码(适用于 5.0 和 5.1)可在以下地址找到:[http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/]


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2007 年 10 月 31 日下午 8:43 GMT (差异)