Représentation binaire des données
Les instructions
READ et
WRITE permettent de lire et d'écrire des représentations binaires des types de donnée Gambas.
Type de Donnée
|
Taille
|
Représentation
|
Boolean
|
1 octet
|
0 pour FALSE (faux), 255 pour TRUE (vrai).
|
Byte
|
1 octet
|
La valeur de la donnée en binaire.
|
Short
|
2 octets
|
La valeur de la donnée en binaire.
|
Integer
|
4 octets
|
La valeur de la donnée en binaire.
|
Long
|
8 octets
|
La valeur de la donnée en binaire.
|
Pointer
|
4 octets en 32 bits
8 octets en 64 bits
|
La valeur du pointeur en binaire.
|
Single
|
4 octets
|
La valeur de la donnée en binaire.
|
Float
|
8 octets
|
La valeur de la donnée en binaire.
|
Date
|
8 octets
|
La date et l’heure en deux entiers de quatre octets.
|
String
|
variable
|
La longueur de la chaîne est d’abord écrite, sous forme d’un nombre entier de longueur variable :
-
Un octet si la longueur de chaîne est inférieure ou égale à 127 caractères.
-
Deux octets si la longueur de chaîne est comprise entre 128 et 16383 caractères.
-
Quatre octets si la longueur de chaîne est comprise entre 16384 et 1073741824 caractères.
-
Les chaînes plus longues ne peuvent pas être écrites actuellement.
Le contenu de la chaîne est écrit ensuite.
Depuis 3.15
Si la propriété Stream.NullTerminatedString est définie,
alors les chaînes de caractères sont terminées par un caractère nul. Aucune longueur de chaîne n'est lue ou écrite.
|
NULL
|
1 octet
|
Les valeurs et les chaînes nulles sont écrites comme un simple octet 0 .
|
Variant
|
Variable
|
Quand on écrit une valeur de type variant, un octet indiquant le type de donnée value est d’abord écrit.
La valeur elle-même est écrite selon cette table.
|
Array
|
2 octets + longueur du tableau + contenu du tableau
|
-
Un octet dont la valeur est 65.
-
Un octet dont la valeur représente le type de donnée du contenu du tableau.
-
La longueur du tableau, écrite comme une longueur de chaîne.
-
La valeur de chaque élément du tableau.
|
Collection
|
1 octet + longueur de la collection + contenu de la collection
|
-
Un octet dont la valeur est 67 si les clés de la collection sont sensibles à la casse , 99 si elles ne le sont pas.
-
La longueur de la collection, écrite comme une longueur de chaîne.
-
Pour chaque élément de la collection:
-
La clé, écrite comme une chaîne
-
Sa valeur associée.
|
Structure
|
Taille du contenu
|
-
Les contenus de structures sont écrits récursivement dans l’ordre de la déclaration.
-
Les tableaux enfouis sont écrits dans l’ordre. Contrairement aux tableaux normaux, ni taille ni entête de type ne sont écrits.
|
Objets sérialisables
Depuis 3.15
|
1 octet + nom de classe (optionnel) + contenu de l'objet
|
-
Un octet dont la valeur est 79 ou 111.
-
Si l'octet initial est 111, le nom de la classe est écrit de cette manière :
-
Un octet pour la longueur de nom de la classe, entre 1 et 255.
-
Le nom de la classe.
-
le contenu de l'objet comme écrite par la méthode _write de la classe.
|
L'endianness de la donnée binaire est l'endianness du flux.
Voir aussi