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 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 12 juil. 2017 à 18:43
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 12 juil. 2017 à 18:43
A voir également:
- Convertir une chaine de caratères to uint32_t
- Chaine tnt gratuite sur mobile - Guide
- Qwerty to azerty - Guide
- Convertir youtube en mp3 avec audacity - Guide
- Plus de chaine tv - Guide
- Nouvelle chaîne tnt gratuite 2024 - Accueil - TV & Vidéo
1 réponse
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
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