Comment puis-je modifier un caractère hexagonal, pas une chaîne, dans une valeur numérique?
Tout en tapant cette question, j'ai trouvé de nombreuses réponses sur la manière de convertir des chaînes hexagonales en valeurs. Cependant, aucun ne fonctionne pour les caractères. Je me souviens de lire quelque part que cela fonctionne pour les chaînes: p> Cependant, si je fais Alors, comment dois-je faire ça? Actuellement, je cherche à la recherche d'une chaîne de caractères hexagonales ( mytr [x] code> dans une boucle, ce code ne fonctionnera pas . J'ai essayé d'ajouter une nouvelle ligne avec
std :: chaîne temp = mystr [x] Code> et changer
std :: stringstream (mystr) code> sur
std :: stringstream ( Temp) code>, mais cela ne fonctionne pas non plus. P>
"0123456789ABCDEF" .Find (mystr [x]); code>) et à l'aide de l'index de la valeur. Cependant, depuis que cela recherche, il est lent, même si ce n'est que la recherche de 16 caractères. P>
4 Réponses :
int intval = (hexchar >= 'A') ? (hexchar - 'A' + 10) : (hexchar - '0');
Y a-t-il une version de votre code qui fonctionne avec des caractères hexagonales de différents cas? (par exemple 'a', 'a')
Pour cela, convertissez simplement HexChar en une lettre majuscule avant d'utiliser cette expression.
@QuamRana: J'ai ajouté un soutien minuscule dans ma réponse.
quelque chose comme ce qui suit?
Vous avez déjà une solution qui fonctionne avec des chaînes. Utilisez-le pour Char code> S TOO:
#include <string>
#include <sstream>
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
char val = 'A';
unsigned int myval;
std::stringstream ss;
ss << val;
ss >> std::hex >> myval;
cout << myval << endl;
}
Le ternaire de Levis501 peut être étendu à: mais si vous voulez vérifier une erreur, il est un peu désordonné: p> int v = ASCIIHexToInt[c];
if (v < 0)
// Invalid input
C'est difficile à comprendre ce que vous avez essayé. Pourquoi ne pas publier toutes les variantes que vous avez essayées et expliquez pour chaque pourquoi ils ne fonctionnent pas.
Dupliqué possible de C ++ Convertir une chaîne hexagonale en integer