Convertir une chaine de caratères to uint32_t
Résolu/Fermé
abyass
Messages postés
18
Date d'inscription
vendredi 30 juin 2017
Statut
Membre
Dernière intervention
21 août 2017
-
6 juil. 2017 à 11:48
[Dal] Messages postés 6203 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 29 janvier 2025 - 12 juil. 2017 à 18:43
[Dal] Messages postés 6203 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 29 janvier 2025 - 12 juil. 2017 à 18:43
A voir également:
- Convertir une chaine de caratères to uint32_t
- Chaine tnt gratuite sur mobile - Guide
- Convertir youtube en mp3 avec audacity - Guide
- Qwerty to azerty - Guide
- Plus de chaine tv - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
1 réponse
[Dal]
Messages postés
6203
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
29 janvier 2025
1 098
6 juil. 2017 à 13:17
6 juil. 2017 à 13:17
Salut abyass,
Ton code fonctionne : 1A41BF02 en hexadécimal donne bien 440516354 en décimal.
Par contre, tu ne crées pas un uint32_t, mais un unsigned long.
Dal
Ton code fonctionne : 1A41BF02 en hexadécimal donne bien 440516354 en décimal.
Par contre, tu ne crées pas un uint32_t, mais un unsigned long.
Dal
6 juil. 2017 à 13:51
Oui je vois que la fonction retourne '1A41BF02' en décimal. Et je comprends pas car j'ai défini la BASE 16.
y a t-il une méthode pour convertir en uint32_t et non pas en unsigned long?
Merci :)
Modifié le 6 juil. 2017 à 15:37
Ensuite, le résultat de la conversion est stocké dans ta variable, et tu l'affiches avec printf. Comme tu n'indiques aucun spécificateur particulier pour afficher cet entier, printf l'affiche en base 10.
Si ce que tu veux c'est afficher l'entier en hexadécimal, utilise le spécificateur %x de printf
http://www.cplusplus.com/reference/cstdio/printf/
Ensuite, strtoul() va renvoyer un unsigned long. Si tu veux un uint32_t, tu dois faire un transtypage. Note que, dans l'un ou l'autre cas, le printf avec les spécificateurs de type affichera la valeur contenue dans la variable sous la forme d'un entier en base 10, sauf si tu utilises %x.
Donc, la conversion de chaîne en nombre est un problème différent de l'affichage du nombre.
Pouvoir faire tout cela suppose que tu ne dépasses pas les limites permises par les différents types en fonction de la chaîne entrée.
Cet exemple tient compte des limites propres à l'architecture sur laquelle le code est compilé, gère les erreurs de dépassement, et affiche le nombre en hexadécimal en majuscules en le préfixant de 0 si nécessaire pour afficher 8 caractères composant les 4 octets.
Dal
12 juil. 2017 à 15:39
12 juil. 2017 à 18:43