Bonjour,
voila je dois simplement convertir des IDs que je récupère sous forme d'entier, en format Hexadécimal et pouvoir notamment les afficher a l'écran. Comment faire ?
Merci d'avance !
Bonjour,
voila je dois simplement convertir des IDs que je récupère sous forme d'entier, en format Hexadécimal et pouvoir notamment les afficher a l'écran. Comment faire ?
Merci d'avance !
IntToHex() devrait répondre à ta question.
Merci v tester.
Roo j'ai quand meme pas chercher loin mdr
IntToHex convertit un entier en hexadécimal sur un certain nombre de chiffres hexadécimaux. Par exemple, AnsiString A=IntToHex(300,4) donnera '012C', ça ne répond donc pas à la question.
Il faut passer par IntToBin par exemple
qui renvoie une chaîne binaire sur 32 bits dans un AnsiString.
Code : Sélectionner tout - Visualiser dans une fenêtre à part AnsiString A=IntToBin(n);
À bientôt
Gilles
Envoyé par Benjy
IntToHex() est pourtant la bonne réponse à la question ?Envoyé par Gilles Louïse
![]()
:
Je viens d'essayer: BCB me met simplement que cette fonction n'existe pas (IntToBin)![]()
Elle existe la fonction IntToBin, je l'ai trouvé dans l'aide par contre, il doit falloir inclure un package et je ne sais pas lequel car ce n'est pas précisé clairement dans l'aide.
Surement effectivement puisque moi avec ma pov version personnelle elle n'est meme pas dans l'aide cette fonction !
En tout cas c pas grave, comme je connais la taille de mes ID: 11 ou 29 bits, j'ai utilisé la fonction IntToHex que neilbgr me conseille depuis le debut en mettant en deuxieme parametre 29 puisque c la plus grande longueur d'ID que je peux avoir.
Est-ce que mon raisonnement est bon selon vous ?
29 bits = 2^29 possibilités
Avec le 0 ca nous fait une plage de 0 à (2^29 - 1) soit :
2^29 - 1 = 536 870 912 - 1
536870911 en hexa ca donne : 1F FFF FFF
donc 8 digits devraient suffir me semble-t-il
Oui, où avais-je la tête? Je croyais que l'internaute voulait du binaire (sans doute parce que cette question avait déjà été posée).Envoyé par neilbgr
Oui, IntToHex vous donnera bien de l'hexadécimal sur un nombre de digits hexa demandé à l'avance.
À bientôt
Gilles
Ok. Maintenant ca marche bien avec mes 8 digits d'hexadecimal.
Par contre c plutot moche lorsque je tombe sur des ID de 11 bits seulement qui n'ont donc besoin que de 3 digits en hexa. Hors ca ne donne que des zeros a gauche plutot encombrant.
Quelqu'un aurait il une idée pour enlever rapidement ces zeros a gauche ?
Merci d'avance !
J'ai l'impression qu'il faut le faire "à la main", par exemple :
À bientôt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 i=1; while(A[i]=='0') i++; A=A.SubString(i,A.Length()-i+1);
Gilles
On peut toujours le faire en standard
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include <sstream> AnsiString IntToHex2(int x) { std::ostringstream oss; oss << std::hex << x; return oss.str().c_str(); }
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
C'est excellent, bravo Loulou24.
Quand on ne connaît pas les fonctions, on a sa "tête" mais puisque c'est déjà fait, autant utiliser l'existant.
À bientôt
Gilles
Partager