2013-06-03 5 views
2

Je souhaite convertir une chaîne hexadécimale en une décimale 16 bits dans RAD Studio C++ Builder XE.Comment encoder une chaîne hexadécimale en entier dans BCB XE

Par exemple, j'ai la chaîne hex "8FC". La représentation binaire de ceci est 100011111100. La représentation décimale de ceci est: 2300.

Comment faire cette conversion dans C++ Builder XE?

+0

Regardez [ 'istringstream'] (http://en.cppreference.com/w/cpp/io/basic_stringstream) et ['hex'] (http://en.cppreference.com/w/cpp/io/manip/hex). L'exemple sur ['hex'] (http://en.cppreference.com/w/cpp/io/manip/hex) fait exactement ce que vous voulez. –

+0

S'il peut être utilisé dans C++ Builder XE? Le 'std :: hex' dans' C++ Builder XE' demande à 'ios_base & _Iosbase' comme paramètres. Veuillez noter que j'utilise 'C++ Builder XE'. Merci beaucoup. – Andromeda

+0

Créez un [sscce] (http://sscce.org), c'est-à-dire le plus petit exemple possible qui devrait fonctionner mais pas, que nous pouvons tous essayer à la maison. Ou essayez le [exemple] (http://en.cppreference.com/w/cpp/io/manip/hex) J'ai lié et voir si vous pouvez le faire fonctionner. –

Répondre

5

Enfin, je trouve la bonne façon comment faire cette conversion sur this article. Il essaie juste d'appeler la procédure StrToInt() mais préfixer un " $" comme ceci:

s1 = "8FC"; 
int i = StrToInt(UnicodeString("$") + s1); 
Edit1->Text = IntToStr(i); 
0

Un moyen facile est d'utiliser std:stringstream

#include <ios> 
#include <sstream> 
#include <ostream> 
#include <iostream> // MS & Borland seem to be deficient in requiring this 

int main() 
{ 
    unsigned short val; 

    std::stringstream st("8FC"); 
    st >> std::hex >> val; 

    // convert it back to text as decimal 
    st.clear(); 
    st << std::dec << val; 
    std::cout << "Decimal value " << st.str() << std::endl; 
} 
+0

S'il peut être utilisé dans C++ Builder XE? Le 'std :: hex' dans C++ Builder XE demande les paramètres' ios_base & _Iosbase'. Veuillez noter que j'utilise C++ Builder XE. Merci beaucoup. – Andromeda

+0

'std :: hex' fait partie de la bibliothèque standard C++. J'ai mis à jour ma réponse pour inclure l'en-tête supplémentaire requis et la conversion en texte décimal –

+0

J'ai essayé votre suggestion mais cela soulève toujours un message d'erreur. Voici les messages: '[Erreur BCC32] uPort.cpp (133): E2285 Impossible de trouver une correspondance pour 'std :: stringstream :: basic_stringstream (UnicodeString)'', '[Erreur BCC32] uPort.cpp (133): E2031 Impossible de transtyper 'UnicodeString' en 'std :: stringstream'' – Andromeda

Questions connexes