Je cherche un moyen de convertir hex
(hexadécimal) à dec
(décimal) facilement. J'ai trouvé un moyen facile de faire cela comme:
int k = 0x265;
cout << k << endl;
Mais avec ça, je ne peux pas entrer 265
. Y a-t-il un moyen pour que cela fonctionne comme ça:
Entrée: 265
Sortie: 613
Y'a-t'il un quelconque moyen d'y arriver ?
Note: J'ai essayé:
int k = 0x, b;
cin >> b;
cout << k + b << endl;
et ça ne marche pas.
#include <iostream>
#include <iomanip>
int main()
{
int x, y;
std::stringstream stream;
std::cin >> x;
stream << x;
stream >> std::hex >> y;
std::cout << y;
return 0;
}
Utilisez std::hex
manipulator:
#include <iostream>
#include <iomanip>
int main()
{
int x;
std::cin >> std::hex >> x;
std::cout << x << std::endl;
return 0;
}
Eh bien, la voie C pourrait être quelque chose comme ...
#include <stdlib.h>
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
printf("%X", n);
exit(0);
}
Voici une solution utilisant des chaînes et la convertissant en décimal avec les tables ASCII:
#include <iostream>
#include <string>
#include "math.h"
using namespace std;
unsigned long hex2dec(string hex)
{
unsigned long result = 0;
for (int i=0; i<hex.length(); i++) {
if (hex[i]>=48 && hex[i]<=57)
{
result += (hex[i]-48)*pow(16,hex.length()-i-1);
} else if (hex[i]>=65 && hex[i]<=70) {
result += (hex[i]-55)*pow(16,hex.length( )-i-1);
} else if (hex[i]>=97 && hex[i]<=102) {
result += (hex[i]-87)*pow(16,hex.length()-i-1);
}
}
return result;
}
int main(int argc, const char * argv[]) {
string hex_str;
cin >> hex_str;
cout << hex2dec(hex_str) << endl;
return 0;
}
std::cout << "Enter decimal number: " ;
std::cin >> input ;
std::cout << "0x" << std::hex << input << '\n' ;
si vous ajoutez une entrée qui peut être un booléen, un float ou un int, elle sera renvoyée dans l'appel de la fonction main int ...
Avec les modèles de fonction, basés sur des types d'argument, C génère des fonctions distinctes pour gérer chaque type d'appel de manière appropriée. Toutes les définitions de modèle de fonction commencent par le modèle de mot-clé suivi par les arguments entre crochets <et>. Un seul paramètre formel T est utilisé pour le type de données à tester.
Considérez le programme suivant où l'utilisateur est invité à entrer un entier, puis un float, chacun utilise la fonction carrée pour déterminer le carré . Avec des modèles de fonction, basés sur des types d'argument, C génère des fonctions séparées pour gérer chaque type d'appel. de manière appropriée. Toutes les définitions de modèle de fonction commencent par le modèle de mot-clé suivi par les arguments entre crochets <et>. Un seul paramètre formel T est utilisé pour le type de données à tester.
Considérez le programme suivant où l'utilisateur est invité à entrer un entier, puis un float, chacun utilisant la fonction carrée pour déterminer le carré.
#include <iostream>
using namespace std;
template <class T> // function template
T square(T); /* returns a value of type T and accepts type T (int or float or whatever) */
void main()
{
int x, y;
float w, z;
cout << "Enter a integer: ";
cin >> x;
y = square(x);
cout << "The square of that number is: " << y << endl;
cout << "Enter a float: ";
cin >> w;
z = square(w);
cout << "The square of that number is: " << z << endl;
}
template <class T> // function template
T square(T u) //accepts a parameter u of type T (int or float)
{
return u * u;
}
Here is the output:
Enter a integer: 5
The square of that number is: 25
Enter a float: 5.3
The square of that number is: 28.09
J'utilise ceci:
template <typename T>
bool fromHex(const std::string& hexValue, T& result)
{
std::stringstream ss;
ss << std::hex << hexValue;
ss >> result;
return !ss.fail();
}