Alcor6L/eLua/pack
外观
< Alcor6L
此模块允许将数据任意打包到 Lua 字符串中,并将数据从 Lua 字符串中解包。这样,字符串就可以用于以平台无关的方式存储数据。它基于 Luiz Henrique de Figueiredo 的 lpack
模块(进行了一些小的调整)。
此模块的两种方法(pack
和 unpack
)都使用格式字符串来描述如何打包/解包数据。格式字符串包含一个或多个数据说明符,每个数据说明符都应用于必须打包/解包的单个变量。数据说明符具有以下一般格式
[endianness]<format_specifier>[count]
其中
- 字节序 是一个可选的字节序标志,它指定将要打包/解包的数字如何在内存中存储。它可以是
'<' for little endian. '>' for big endian. '=' for native endian (the platform's endian order, default).
- 格式说明符 描述将要打包/解包的变量类型。格式说明符区分大小写。此参数的可能值在下表中总结
'z' zero-terminated string 'p' string preceded by length byte 'P' string preceded by length word 'a' string preceded by length size_t 'A' string 'f' float 'd' double 'n' Lua number 'c' char 'b' byte = unsigned char 'h' short 'H' unsigned short 'i' int 'I' unsigned int 'l' long 'L' unsigned long
- 计数 是格式说明符的可选计数器。例如,
i5
指示代码打包/解包 5 个整数变量,而不是指定单个整数变量的i
。
将变量打包到一个字符串中。
packed = pack.pack( format, val1, val2, ..., valn )
- format - 格式说明符(如这里所述)。
- val1 - 要打包的第一个变量。
- val2 - 要打包的第二个变量。
- valn - 要打包的第 n 个变量。
返回
- packed - 包含根据格式打包的所有变量的打包表示形式的字符串。
解包一个字符串
nextpos, val1, val2, ..., valn = pack.unpack( string, format, [ init ] )
- string - 要解包的字符串。
- format - 格式说明符(如这里所述)。
- init - (可选)标记解包应该从字符串中的哪个位置开始(如果没有指定则为 1)。
返回
- nextpos - 解包后字符串中的位置。
- val1 - 第一个解包的值。
- val2 - 第二个解包的值。
- valn - 第 n 个解包的值。