cs_MrDimanche
Messages postés16Date d'inscriptionmercredi 25 juillet 2007StatutMembreDernière intervention16 avril 2008
-
27 juil. 2007 à 15:05
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 2009
-
27 juil. 2007 à 18:54
Voila,
Mon problème est simple.
Dans une string (char[100]), j'ai ceci : E9876. Je voudrais obtenir sa valeur en int. Comment faire, j'ai beau chercher je ne trouve rien
A voir également:
Convertir une chaine de caractère en entier python
cs_MrDimanche
Messages postés16Date d'inscriptionmercredi 25 juillet 2007StatutMembreDernière intervention16 avril 2008 27 juil. 2007 à 18:49
Je pense que c'est peut être un peu trop sophistiqué pour ce que je voulais faire, alors j'ai pris ma chaine, je l'ai coupée en deux autres chaînes, et j'ai fait
double time = (double)(strtoul( str2, NULL, 16 ))*16777216+strtoul( str, NULL, 16 );
Bon ça parait un peu viellot et basic comparé à vos propositions mais bon, merci beaucoup
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 27 juil. 2007 à 15:57
Trop court ? Ça veut dire quoi ?
Sinon, j'ai fourni un lien vers un code de notre ami BruNews qui permet de convertir une chaine sous format hexa vers un DWORD et ce sans pow ou autre fonction mathématique inutile pour ce genre de chose.
cs_MrDimanche
Messages postés16Date d'inscriptionmercredi 25 juillet 2007StatutMembreDernière intervention16 avril 2008 27 juil. 2007 à 16:14
En fait, je me dois d'admettre mon ignorance, et je ne sais absolument pas me servir d'un DWORD, j'aurais besoin d'un peu plus d'indication que ce qui est donné. Je vais essayer de trouver.
Merci
cs_MrDimanche
Messages postés16Date d'inscriptionmercredi 25 juillet 2007StatutMembreDernière intervention16 avril 2008 27 juil. 2007 à 16:28
Attention, je commence à atteindre mon point critique. J’ai d'ailleurs bien entamé le plâtre du mur près de mon bureau. Malheureusement, j'ai l'impression que de me cogner la tête sur tout ce que je trouve ne fait pas bien avancer mon boulot. Il faut absolument que quelqu'un m'offre une solution avant que tout cela ne me coute trop cher en ciment, peinture, pansement et aspirine. Quelqu'un peut-il me tirer de cet état de folie déjà bien avancé, bien des gens se sont fait enfermer pour moins que ça, en me donnant quelque chose qui me le retourne en double ? Je vous laisse, je prends mes petits cachets roses et je passe au mur suivant.
Merci de votre attention
cs_MrDimanche
Messages postés16Date d'inscriptionmercredi 25 juillet 2007StatutMembreDernière intervention16 avril 2008 27 juil. 2007 à 17:19
Oui, je suis sûr que ce devrait être en double car cet hexa encode 6bytes, soit 48 bits. Je ne puis faire autrement ;(
Je veux bien que vous veniez, mais il n'y a plus de mur dans mon bureau. On ira chez mon collègue, je suis sûr qu'il appréciera.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 27 juil. 2007 à 17:54
Ce n'est pas très difficile d'adapter le code de BruNews.
ret qui est un DWORD devra être remplacé par un __int64
n devra pouvoir monter jusqu'à 16.
C'est tout, menfin je crois. Je l'ai adapter et tout fonctionne parfaitement.
En passent BruNews:
DWORD __stdcall HexaToDecimal(const char* pszHexa)
{ DWORD ret 0, t 0, n = 0;
const char *c = pszHexa;
while(*c && (n < 16) ) {
if((*c > = '0') && (*c <= '9')) t = (*c - '0');
else if((*c >= 'A') && (*c <= 'F')) t = (*c - 'A' + 10);
else if((*c >= 'a') && (*c <= 'f')) t = (*c - 'a' + 10);
else break;
n++; ret *= 16; ret += t; c++;
if(n >= 8) break; }
return ret;
}
n est testé 2 fois.
Les valeurs testées sont différentes.