Go Down

Topic: [Résolu] unsigned long, comment afficher les zeros non-significatifs (Read 641 times) previous topic - next topic

bigben99

Bonjour,

Pour la mise en place d'un protocole d'échange de messages entre mes différents arduinos par XBee, j'aurais besoin de créer des identifiants de message uniques. Pour cela, je me suis dit que je pouvais composer mon identifiant unique en concaténant un unsigned int (5 positions) lu dans l'EEPROM de mon arduino avec un unsigned long (10 positions) qui sera incrémenté a chaque envoi de message.

Ma séquence d'identifiants sera donc :
000010000000001
000010000000002
000010000000003
....

Pour écrire mon identifiant dans ma trame, je fais donc un print(unsigned int) et un print(unsigned long) mais le print ne fait pas apparaitre les 0 non-significatifs devant les nombres. Existe-t-il une fonction pour afficher les 0 non-significatifs où dois-je implémenter une fonction qui crée ma chaine de caractère en ajoutant les 0 non-significatifs un à un ?

Merci d'avance pour votre aide.

BIGBen

Philomenale

Bonjour Bigben99,

as-tu essayé de convertir au préalable ta valeur en texte à l'aide de la fonction sprintf comme par exemple:
Code: [Select]
sprintf(ChaineDestination, "Ma séquence d'identifiants sera donc : %010d \n", Identifiant); ?

SMarty

Salut,

et en passant les données en mode binaire ?

b000010000000001
b000010000000010
b000010000000011
...

avec les opérateur de décalage et les bitmasks ya peut être moyen de faire quelque chose.

A toi de mettre ne place un protocole.

bigben99


Bonjour Bigben99,

as-tu essayé de convertir au préalable ta valeur en texte à l'aide de la fonction sprintf comme par exemple:
Code: [Select]
sprintf(ChaineDestination, "Ma séquence d'identifiants sera donc : %010d \n", Identifiant); ?



Merci ! Ta solution fonctionne à merveille ! j'ai juste du retoucher pour bien convertir des unsigned :)

Code: [Select]
  char msgId [15];
  sprintf(msgId, "%05u%010u", msgEepromId, msgLoopId);

Go Up