spécification du format de décodage
La chaîne de format se compose d'un ensemble de caractères qui indiquent le type d'argument pour chaque position relative.
a fixed width string, right padded with NULLs
Afixed width string, right padded with spaces
Bbignum (encoded as a null terminated string)
ddouble (8 bytes)
hshort (2 bytes, -32768 through 32767))
Hunsigned short (2 bytes, 0 through 65535)
iinteger (4 bytes, -2147483648 through 2147483647)
Iunsigned integer (4 bytes, 0 through 4294967295)
llong long (8 bytes)
Lunsigned long long (8 bytes)
Nfixed width number (ascii encoded)
pposition within the string (only valid for decode)
vvariable length binary string up to 65535 bytes
Vvariable length binary string up to 4294967295 bytes
ybyte (-128 through 127)
Yunsigned byte (0 through 255)
Znull terminated string
Modifiers
> encode number using big endian format
< encode number using little endian format
Pour tous les types de format autres que A et N, un nombre peut être spécifié après le caractère de format pour répéter ce type un certain nombre de fois.
Les options A et N se comportent différemment des autres options. Tous deux ne génèrent ou ne consomment qu'une seule valeur d'entrée de largeur fixe. Pour les formats de longueur fixe A et N, la fonction d'encodage tronque la valeur si elle est supérieure à la largeur spécifiée du champ.
Le formati10" correspond à 10 entiers, tandis que le formatA10" correspond à une chaîne de 10 caractères de largeur fixe. N5" signifie que la largeur de la table.maxndecnumber est fixe et qu'elle comporte 5 caractères.
Les formats l et L (long long) ne prennent en charge que 53 bits d'informations, car le format des nombres de Lua est un double qui utilise 53 bits pour stocker le nombre et 11 bits pour stocker l'exposant.
Les opérateurs < et > s'appliquent à un seul caractère de format. La chaîne de format "i>ii<" encode le premier nombre entier au format big endian, le deuxième au format natif (par défaut) et le troisième au format little endian. La chaîne de formati10>' indique qu'il faut encoder 10 entiers en utilisant le format big endian.