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 個解包的值。