écriture d'un nombre sur 3 octets
Résolu
Mr_Kiyoshi
Messages postés
28
Date d'inscription
Statut
Membre
Dernière intervention
-
Mr_Kiyoshi Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
Mr_Kiyoshi Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
Bonjour j'aimerai écrire une vitesse allant de 0 à 999 sur 3 octet dans une mémoire (une adresse correspondant à un chiffre) sauf que je ne sais comment récupéré les unité/dizaines/centaines par exemple 20 Tr/min j'aimerai écrire 0 2 0 en ascii.
Merci
Merci
A voir également:
- écriture d'un nombre sur 3 octets
- Écriture facebook - Guide
- Ai suite 3 - Télécharger - Optimisation
- Ecriture en gras - Guide
- Picasa 3 - Télécharger - Albums photo
- Ecriture instagram - Guide
4 réponses
Pour écrire un nombre qui va de 0 à 999, t'as besoins de moins de 3 octets.
1024 = 2^10. donc tu as besoin de 10 bits pas plus.
décris moi le truc et je te dirais si t'as pas moyen de faire plus simple. parce que je ne vois pas l'intérêt de ta technique. (passer 020 en 0 2 0)
1024 = 2^10. donc tu as besoin de 10 bits pas plus.
décris moi le truc et je te dirais si t'as pas moyen de faire plus simple. parce que je ne vois pas l'intérêt de ta technique. (passer 020 en 0 2 0)
Merci pour vos réponses,
Enfet c est pour un projet sur un moteur j'obtiens une vitesse en tour/min et je doit l'écrire dans une mémoire commune sur 3 adresse pour qu'en suite une autre carte viens lire ces trois adresses et l'affichera. Par exemple si j'ai une vitesse de 20 tr/min écrira 0 à une adresse 2 à la deuxième et 0 à la troisième
Enfet c est pour un projet sur un moteur j'obtiens une vitesse en tour/min et je doit l'écrire dans une mémoire commune sur 3 adresse pour qu'en suite une autre carte viens lire ces trois adresses et l'affichera. Par exemple si j'ai une vitesse de 20 tr/min écrira 0 à une adresse 2 à la deuxième et 0 à la troisième
Ah... dans ce cas... te prends pas la tête.
Si c'est comme en C, et que ton nombre est un int.
Si tu divise un int/int tu sors un int
Donc tu copie ça avec conversion dans ton lagage et tu test
------------------------------
Vitesse = Vitesse connue
nAdresse1 = Centaines
nAdresse2 = Dizaines
nAdresse3 = Unités
-------------------------------
Exemple pouur 120
0 : *DEBUT*
1 : nA1 = 120 / 100 // = 1
2 : V = 120 - 1*100 // = 20
3 : nA2 = 20 / 10 // = 2
4 : nA3 = 20 - 2*10 // = 0
5 : *FIN*
V = 20
nA1 = 1
nA2 = 2
nA3 = 0
Si c'est comme en C, et que ton nombre est un int.
Si tu divise un int/int tu sors un int
Donc tu copie ça avec conversion dans ton lagage et tu test
------------------------------
Vitesse = Vitesse connue
nAdresse1 = Centaines
nAdresse2 = Dizaines
nAdresse3 = Unités
-------------------------------
*************
nAdresse1 = Vitesse / 100
Vitesse = Vitesse - nAdresse1 * 100
nAdresse2 = Vitesse / 10
nAdresse3 = Vitesse - nAdresse2 * 10
Exemple pouur 120
0 : *DEBUT*
1 : nA1 = 120 / 100 // = 1
2 : V = 120 - 1*100 // = 20
3 : nA2 = 20 / 10 // = 2
4 : nA3 = 20 - 2*10 // = 0
5 : *FIN*
V = 20
nA1 = 1
nA2 = 2
nA3 = 0
Salut Mr_Kiyoshi,
Si tu as un entier (un
Comme ce que tu veux, ce sont des char, le plus simple est d'utiliser sprintf, et d'utiliser les spécificateurs te permettant de combler à gauche par des zéros.
donne des char, comme tu le souhaites :
Dal
Si tu as un entier (un
inten C), et que tu veux obtenir 3 caractères (des
charen C), le fait d'effectuer des divisions va te donner des entiers.
Comme ce que tu veux, ce sont des char, le plus simple est d'utiliser sprintf, et d'utiliser les spécificateurs te permettant de combler à gauche par des zéros.
#include <stdio.h> #include <stdlib.h> int main(void) { int tours_min = 20; char st_toursmin[4]; if ( (tours_min > 999) || (tours_min < 0) ) { printf("Erreur tours_min n'a pas une valeur correcte\n"); return EXIT_FAILURE; } else { snprintf(st_toursmin, 4, "%03d", tours_min); printf("Premier digit : %c\n", st_toursmin[0]); printf("Deuxième digit : %c\n", st_toursmin[1]); printf("Troisième digit : %c\n", st_toursmin[2]); } return 0; }
donne des char, comme tu le souhaites :
Premier digit : 0
Deuxième digit : 2
Troisième digit : 0
Dal
est ce que si j'écris dans la mémoire st_toursmin[0] je vais écrire '1' si on à 120 tour/min?
Cela va écrire la premier caractère contenu dans la chaîne de caractères st_toursmin, c'est à dire le caractère '1' ou 49 en ASCII, si la chaîne contient "120".
et à quoi sert la ligne 13 ?
snprintf est une fonction du C standard, qui formate une chaîne avec des spécificateurs de format, à la manière de printf, mais qui, au lieu d'envoyer le résultat formaté vers l'écran, envoie le résultat vers une variable de type
Pour les spécificateurs, tu peux les consulter sur cette documentation de printf, puisque ce sont les mêmes.
Dal
Cela va écrire la premier caractère contenu dans la chaîne de caractères st_toursmin, c'est à dire le caractère '1' ou 49 en ASCII, si la chaîne contient "120".
et à quoi sert la ligne 13 ?
snprintf est une fonction du C standard, qui formate une chaîne avec des spécificateurs de format, à la manière de printf, mais qui, au lieu d'envoyer le résultat formaté vers l'écran, envoie le résultat vers une variable de type
* char(chaîne de caractère en C). En outre, snprintf permet de spécifier la taille maximale du tampon destiné à accueillir la chaîne C, de façon à éviter les débordements de mémoire.
Pour les spécificateurs, tu peux les consulter sur cette documentation de printf, puisque ce sont les mêmes.
Dal