Skip to content

mathisfouques/dio_and_forms_example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Exemple pour gérer des octets

Pour créer une liste d'octets (Uint8List) en Dart qui contient des informations formatées spécifiquement, comme une couleur et une vitesse, nous allons définir chaque élément selon vos instructions et ensuite les assembler dans un seul Uint8List. Dans cet exemple, nous allons supposer que :

  • La "couleur appelée soleil" est représentée par deux octets. Pour simplifier, disons que c'est une valeur entière où le premier octet est la composante rouge et le second est la composante verte (RGB simplifié sans bleu pour cet exemple).
  • La "vitesse appelée guépard" est représentée par quatre octets. Nous pouvons utiliser un entier pour cela, sachant que Dart utilise un format Little Endian par défaut pour ByteData.

Imaginons la suite du format comme suit :

  • Les deux octets suivants après la vitesse pourraient représenter une "température appelée brise", où les deux octets forment un entier court (16 bits).
  • Ensuite, un octet pour "l'humidité appelée rosée", représentant un pourcentage de 0 à 100.

Voici le code qui construit une telle liste d'octets :

import 'dart:typed_data';

void main() {
  // Définition des variables
  int soleilRouge = 255; // composante rouge de la couleur "soleil"
  int soleilVert = 200; // composante verte de la couleur "soleil"
  int vitesseGuepard = 123456; // vitesse "guepard"
  int temperatureBrise = 25; // température "brise" en degrés Celsius
  int humiditeRosee = 75; // humidité "rosée" en pourcentage

  // Création d'un buffer pour contenir les octets
  ByteData byteData = ByteData(9); // 2 (soleil) + 4 (guepard) + 2 (brise) + 1 (rosée) = 9 octets

  // Encodage de la couleur "soleil"
  byteData.setUint8(0, soleilRouge);
  byteData.setUint8(1, soleilVert);

  // Encodage de la vitesse "guepard"
  byteData.setUint32(2, vitesseGuepard, Endian.little);

  // Encodage de la température "brise"
  byteData.setUint16(6, temperatureBrise, Endian.little);

  // Encodage de l'humidité "rosée"
  byteData.setUint8(8, humiditeRosee);

  // Conversion du ByteData en Uint8List
  Uint8List resultat = byteData.buffer.asUint8List();

  // Affichage du résultat
  print(resultat);
}

Dans ce code :

  • Nous utilisons ByteData pour pouvoir insérer facilement des valeurs de différentes tailles (8 bits, 16 bits, 32 bits) dans notre trame d'octets.
  • Nous définissons chaque champ selon vos instructions et utilisons les méthodes appropriées pour les écrire dans le buffer (setUint8 pour les octets, setUint32 pour les entiers 32 bits, et setUint16 pour les entiers 16 bits).
  • Nous utilisons Endian.little par défaut pour la méthode setUint32 et setUint16, mais Dart utilise Little Endian par défaut, donc cette précision pourrait être omise.
  • Finalement, nous convertissons le ByteData en Uint8List pour obtenir la liste d'octets finale.

Cela vous donne une trame d'octets avec les informations formatées comme spécifié. Vous pouvez adapter la structure et les types de données selon vos besoins réels.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published