begin process at 2012 05 28 09:31:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

atoi() pour hexa (WIN32)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

atoi() pour hexa (WIN32)

jeudi 28 juillet 2005 à 00:39:48 | atoi() pour hexa (WIN32)

Urgo

Membre Club
Bonsoir,
j'aimerais savoir s'il existe un équivalent de la fonction atoi() POUR la base 16?

exemple:
char* szNumber = "123";
int i = atoi(szNumber);
Ceci marche impec...

MAIS:
char* szNumber = "123FB8C";
int i = atoi(szNumber);
Ne marche pas (normal)...

Merci de bien vouloir m'aider car j'ai sûrement mal cherché...

Urgo
jeudi 28 juillet 2005 à 00:50:25 | Re : atoi() pour hexa (WIN32)

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Un truc comme ça t'irait ?

DWORD 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;
}


ciao...
BruNews, MVP VC++
jeudi 28 juillet 2005 à 01:04:10 | Re : atoi() pour hexa (WIN32)

Urgo

Membre Club
T'es un chef, MERCI !

Ciao
Urgo
jeudi 28 juillet 2005 à 10:06:02 | Re : atoi() pour hexa (WIN32)

whikie

Bonjour a tous,

je profite de ce post pour poser une question en rapport... 

Voila je voudrais savoir s'il existe une fonction pour afficher un decimal en binaire.

Je connais deja la fonction pour afficher des decimals en hexadecimal :

printf("%X",variable)
permet de convertir une variable en hexadecimal

mais je ne trouve pas l'equivalent pour le binaire

Merci d'avance.
jeudi 28 juillet 2005 à 10:18:38 | Re : atoi() pour hexa (WIN32)

BruNews

Administrateur CodeS-SourceS
prépare dans une chaine avant et affiche ensuite (moi et les consolades...):
char chaine[36];
itoa(nbr, chaine, 2);
ton printf de la chaine ici.

ciao...
BruNews, MVP VC++
jeudi 28 juillet 2005 à 10:44:19 | Re : atoi() pour hexa (WIN32)

whikie

Merci beaucoup.
vendredi 29 juillet 2005 à 07:50:22 | Re : atoi() pour hexa (WIN32)

bipcpp

Méthode utilisant le c++ et les string de la STL (extrait des fonctions Bip) :

Prototypes des fonctions :
    int BG_StringToInt (const string sString, const int iBase = 10);
    string BG_IntToString (const int iInt, const int iBase = 10);

Fonctions :
#include <string>
#include <sstream>
//-----------------------------------------------------------------
//!    BG_IntToString : Convert an integer into a string          !
//-----------------------------------------------------------------
//! iInt : int number to convert                                  !
//! iBase : base of the number into the string (default = 10)     !
//!                                                               !
//! return : number into a string                                 !
//-----------------------------------------------------------------
string BG_IntToString (const int iInt, const int iBase)
{
    int iTemp;
    ostringstream sStream;

    // use decimal if base is ko
    if (iBase != 10 && iBase != 16 && iBase != 8 && iBase != 2)
        iTemp = 10;
    else
        iTemp = iBase;

    sStream << setbase (iTemp) << iInt;


    return sStream.str();
}

//-----------------------------------------------------------------
//!    BG_StringToInt : Convert a string to an integer            !
//-----------------------------------------------------------------
//! sString : string contaning integer value                      !
//! iBase : base of the number into the string (default = 10)     !
//!                                                               !
//! return : integer value                                        !
//-----------------------------------------------------------------
int BG_StringToInt (const string sString, const int iBase)
{
    int iBGint;
    int iTemp;

    // return zero if string is empty
    if (sString == "")
        return 0;

    // use decimal if base is ko
    if (iBase != 10 && iBase != 16 && iBase != 8 && iBase != 2)
        iTemp = 10;
    else
        iTemp = iBase;

    istringstream sStream (sString);
    sStream >> setbase (iTemp) >> iBGint;

    return iBGint;
}



lundi 22 février 2010 à 20:48:25 | Re : atoi() pour hexa (WIN32)

scoubidou944


Sans vouloir réinventer la roue (ni faire du necro-posting) :

TCHAR strBuff[256] = _TEXT("0x123456"); // 1193046 in decimal
LONG val = 0;
_stscanf_s(strBuff, _TEXT("%x"), &val);

TCHAR strBuff2[256] = _TEXT("123456"); // 1193046 in decimal
LONG val2 = 0;
_stscanf_s(strBuff2, _TEXT("%x"), &val2);

val = val2 = 1193046 // (en décimal donc)

----------------------------
C++ forever
C# amateur
lundi 22 février 2010 à 21:59:25 | Re : atoi() pour hexa (WIN32)

BruNews

Administrateur CodeS-SourceS
oui oui mais comme toutes les fonctions à nbr d'auguments indéterminés c'est lent 'by design', voire très lent.

ciao...
BruNews, MVP VC++
mardi 23 février 2010 à 15:14:38 | Re : atoi() pour hexa (WIN32)

scoubidou944


OSEF, c'est portable, rapide à écrire & propre.
On fait des benchs après quand tout fonctionne.

Et au final, est ce que cela vaut le coup d'optimiser une fonction qui sera appelée peut-être que 20 fois ?
Est ce que cela faut le coup si demain il veut faire une conversion en Octal et devra écrire une nouvelle fonction ?

Je pense que l'optim' est ailleurs ;p

----------------------------
C++ forever
C# amateur

1 2

Cette discussion est classée dans : char, win32, hexa, atoi, sznumber


Répondre à ce message

Sujets en rapport avec ce message

la fonction atoi [ par fiorellafatma ] [^^pirate]salut à tous j'ai fait cette instruction mais cela a affiché un message d'erreur pourquoi j=atoi(*chr)-'a' il m'a dit que atoi ne peut pas c Char ascii en hexa [ par Stutu ] Bonjour à vous, Je souhaiterais avoir de l'aide de votre part, je m'explique j'ai une liaison RS232 sur laquelle je reçois des trame, chaque trame est problème de conversion unsigned const char* => const char [ par razuki ] Bonjour, Je reviens vers vous car je n'ai pas trouvé de solutions à mon problème de conversion de const char* en unsigned const char*. reinterpret_ca la pile [ par juni10 ] j ai besoin d aide j ai cette structure struct article { char code Article[10]; char nom Article [30]; int quantite; double prix unitaire; }; j ai application console Win32/ projet win32 [ par lolitatou ] salut :) Quelle est la difference entre une application console win32 et un projet win32 ? Est ce que je peux utiliser les api windows dans une appl lecture fichier C [ par ayarikhaoula ] salut tout le monde je souhaite développez une fonction en c : qui lit un fichier ligne par ligne et stoque son contenu dans une chaine de carractère. char [10] dans char [16][10] [ par Stutu ] Bonjour à tous, Je m'explique j'ai un char buffer[10] que je voudrais mettre dans un char temp[16][10] car je vais devoir mettre 16 fois buffer[10] d les fichier en C [ par abdobergach ] bonjour j'ai un erreur qui je connais pas pouquoi qlq'un m'aider svp,voila l'eerreur: error C2664: 'CreateFileW'*: impossible de convertir le paramètr erreur en execution [ par marooh ] bonjour, j'ai ecrit un code qui à partir d'un fichier charge les données dans un arbre binaire de recherche. ça compile et tout mais en executant ça s La mémoire ne peut pas être "written" [ par Nao13090 ] Bonjour à tous ! Dans le cadre de mon projet de gestion de tournoi, j'ai créer via Qt une fenêtre visant à éditer les participants ajoutés au préala


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,451 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales