Модуль pickle
Ниже приведен перечень всех функций модуля pickle
.
Имя | Назначение |
---|---|
pickle.pack() | Конвертация Lua-переменных в двоичный формат |
pickle.unpack() | Конвертация Lua-переменных в двоичный формат |
-
pickle.
pack
(format, argument[, argument ...])¶ To use Tarantool binary protocol primitives from Lua, it’s necessary to convert Lua variables to binary format. The
pickle.pack()
helper function is prototyped after Perl pack.Спецификаторы формата
b, B конвертирует скалярное Lua-значение в 1-байтное целое число и хранит целое число в полученной строке s, S конвертирует скалярное Lua-значение в 2-байтное целое число и хранит целое число в полученной строке, сначала младший байт i, I конвертирует скалярное Lua-значение в 4-байтное целое число и хранит целое число в полученной строке, сначала младший байт l, L конвертирует скалярное Lua-значение в 8-байтное целое число и хранит целое число в полученной строке, сначала младший байт n конвертирует скалярное Lua-значение в 2-байтное целое число и хранит целое число в полученной строке, порядок от старшего к младшему, N конвертирует скалярное Lua-значение в 4-байтное целое число и хранит целое число в полученной строке, порядок от старшего к младшему, q, Q конвертирует скалярное Lua-значение в 8-байтное целое число и хранит целое число в полученной строке, порядок от старшего к младшему, f конвертирует скалярное Lua-значение в 4-байтное число с плавающей запятой и хранит число с плавающей запятой в полученной строке d конвертирует скалярное Lua-значение в 8-байтное число двойной точности и хранит число двойной точности в полученной строке a, A конвертирует скалярное Lua-значение в последовательность байтов и хранит последовательность в полученной строке Параметры: - format (
string
) – строка со спецификаторами формата - argument(s) (
scalar-value
) – скалярные значения к форматированию
возвращает: бинарная строка, которая содержит все аргументы, упакованные в соответствии со спецификаторами формата.
тип возвращаемого значения: строка
Скалярное значение может быть либо переменной, либо литеральным значением. Следует помнить, что большие целые числа нужно вводить с tonumber64() или суффиксами LL или ULL.
Возможные ошибки: неизвестный спецификатор формата.
Пример:
tarantool> pickle = require('pickle') --- ... tarantool> box.space.tester:insert{0, 'hello world'} --- - [0, 'hello world'] ... tarantool> box.space.tester:update({0}, {{'=', 2, 'bye world'}}) --- - [0, 'bye world'] ... tarantool> box.space.tester:update({0}, { > {'=', 2, pickle.pack('iiA', 0, 3, 'hello')} > }) --- - [0, "\0\0\0\0\x03\0\0\0hello"] ... tarantool> box.space.tester:update({0}, {{'=', 2, 4}}) --- - [0, 4] ... tarantool> box.space.tester:update({0}, {{'+', 2, 4}}) --- - [0, 8] ... tarantool> box.space.tester:update({0}, {{'^', 2, 4}}) --- - [0, 12] ...
- format (
-
pickle.
unpack
(format, binary-string)¶ Противоположность
pickle.pack()
. Внимание: если используется спецификатор формата „A“, он должен идти последним.Параметры: возвращает: Список строк или чисел.
тип возвращаемого значения: таблица
Пример:
tarantool> pickle = require('pickle') --- ... tarantool> tuple = box.space.tester:replace{0} --- ... tarantool> string.len(tuple[1]) --- - 1 ... tarantool> pickle.unpack('b', tuple[1]) --- - 48 ... tarantool> pickle.unpack('bsi', pickle.pack('bsi', 255, 65535, 4294967295)) --- - 255 - 65535 - 4294967295 ... tarantool> pickle.unpack('ls', pickle.pack('ls', tonumber64('18446744073709551615'), 65535)) --- ... tarantool> num, num64, str = pickle.unpack('slA', pickle.pack('slA', 666, > tonumber64('666666666666666'), 'string')) --- ...