Pages: [1]   Go Down
Author Topic: [Résolu] unsigned long, comment afficher les zeros non-significatifs  (Read 459 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 39
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: March 31, 2013, 03:35:52 am by bigben99 » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour Bigben99,

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

Offline Offline
Jr. Member
**
Karma: 0
Posts: 57
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 39
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour Bigben99,

as-tu essayé de convertir au préalable ta valeur en texte à l'aide de la fonction sprintf comme par exemple:
Code:
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 smiley

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

Pages: [1]   Go Up
Jump to: