Convertir de std::string en DWORD
J'ai un problème simple avec une conversion:
std::string str = "0xC0A80A02"
et j'ai besoin de le convertir en valeur DWORD.
J'ai cherché sur le web et trouvé une solution mais aucune ne semble fonctionner.
try1:
DWORD m_dwIP = atol(str.c_str());
try2:
std::istringstream ss(str.c_str());
ss >> m_dwIP;
try3:
sscanf (str.c_str(),"%u",str,&m_dwIP);
Note de la chaîne de magasins de la valeur en hexa .
Merci,
Gabriel
- J'ai marqué ce que windows api car il est spécifique de windows (
DWORD
n'est pas standard C++) - merci je suis un débutant en c++ et je reçois les types de tous mélangés
- La question du titre me semble le même que le "Convertir banane dans un pistolet"... 🙂
- Ouais, ce à quoi êtes-vous le passage de cette valeur que prend type
DWORD
? Les Chances sont que la bibliothèque a une sorte de hex converter fonction disponible, ainsi. Dans des circonstances normales, il est absurde de convertir une chaîne en unDWORD
. - La bibliothèque que j'utilise est externe et je n'ai pas accès à elle. Ce que je suis en train de réaliser est d'ajouter un fichier de configuration d'une valeur, puis obtenir cette valeur au démarrage
Vous devez vous connecter pour publier un commentaire.
istringstream
fonctionnera très bien, juste la bande de la0x
préfixe et d'utiliser lestd::hex
formateur:Sorties
c0a80a02
.En supposant
sizeof(DWORD) == sizeof(unsigned long)
, cela devrait le faire:Voir http://www.cplusplus.com/reference/clibrary/cstdlib/strtoul/.
Noter que c'est utilisable en C et en C++ (bande de la
std::
etc_str()
et changement<cstdlib>
à<stdlib.h>
mais cela devrait être assez évident).C'est assez simple problème. Comment voulez-vous, en tant que personne, de lire que nombre hexadécimal et la convertir en décimal? Si vous êtes surhumaine, il vous suffira de savoir immédiatement, mais si vous êtes comme le reste d'entre nous et à utiliser les précieuses cerveau de l'espace pour se souvenir de non-ordinateur de choses comme la façon de balancer un club de golf, vous devrez faire de l'arithmétique. Il vous suffit d'utiliser un mental de l'algorithme pour faire la conversion, et ce que vous avez besoin est un code qui pense pour vous. Vous pouvez utiliser cet algorithme:
Lorsque vous êtes tous fait, la valeur de gauche dans votre accumulateur est votre résultat.