结构打包
wiki
这里有各种关于打包和解包 C 结构体的资源。
Lua 字符串库,包括
[string.byte]
和
[string.char]
,以及
位运算符
,提供了非常基础的功能来实现这一点。
[lpack]
(5.0/5.1) - 一个用于打包和解包二进制数据的库,用 C 编写。(作者:
LuizHenriqueDeFigueiredo
)
[struct]
(5.1/5.2) - 另一个用于打包和解包二进制数据的库,用 C 编写。(作者:
RobertoIerusalimschy
)
[2]
- Flemming Madsen 的扩展
[Alien]
"使用一个略微修改过的 Roberto Ierusalimschy 的 struct 库版本,它可以解包二进制数据块(userdata),而不仅仅是字符串"。注意事项:
LuaList:2009-10/msg00489.html
[luafiveqplus]
包含 Roberto 库的一个后代,包括(大部分)Flemming Madsen 的扩展和一个来自 Alien 的 size 函数。它还确保 unpack 不会因溢出 Lua 的 C 堆栈而导致程序崩溃。
[Lunary]
(5.1) - 另一个用于打包和解包二进制数据的库,用 C 编写。(作者:Jérôme Vuarand) (
[与其他库的区别]
)
[vstruct]
(5.1/5.2 & luaJIT) - 一个完全用 Lua 编写的库,使用字符串库来打包和解包二进制数据。(作者:Ben Kelly)
笔记/示例
以上结构打包库的比较 -
LuaList:2010-03/msg00292.html
(Sam Roberts)
ReadWriteFormat
- 使用 Lua 字符串库实现的简单打包/解包
PortableNetworkGraphicsParser
/
ModuleCompressDeflateLua
- 使用 Lua 字符串库进行解包的示例
[LuaJIT]
FFI 允许使用标准的 C 语法定义结构体。它们可以像表元素一样被访问
[1]
。
struct 曾经至少被考虑用于
LuaFiveTwo
(
LuaList:2008-02/msg00720.html
)。
其他编程语言交叉参考
Perl
[unpack]
[pack]
, Python
[struct 库]
[Wikipedia: 数据结构对齐]
RecentChanges
·
preferences
编辑
·
历史
最后编辑于 2013 年 6 月 1 日 下午 1:14 GMT
(差异)