8
votes

C ++ Convertir String en Hex

Dupliqué possible:
C ++ Convertir la chaîne hexagonale en integer signé

J'ai déjà cherché sur Google mais n'a trouvé aucune aide. Alors voici mon problème: J'ai des chaînes qui contiennent déjà du code hexagonal .: String S1 = "5f0066" Et je veux convertir cette chaîne en hex. J'ai besoin de comparer la chaîne avec du code hexadécial que j'ai lu dans un fichier binaire.

(a juste besoin de l'idée de base comment convertir la chaîne) 5f Meilleures salutations et merci.

Edit: obtenez les informations de fichier binaire dans le format de caractère non signé. Donc c'est 0x5f ... Aimerait avoir une chaîne dans le même format


3 commentaires

Qu'est-ce que signifie "vouloir convertir cette chaîne en hex" si elles sont déjà en hexagone?


strtol () à partir de ? Juste deviner, votre question n'est pas très claire.


Si vous avez lu ces chaînes de fichier (spécifiquement, de std :: ifstream ), Ce peut être une meilleure réponse que la question en double postée ci-dessus.


3 Réponses :


7
votes

strtol (str, null, 16) ou strtoul (str, null, 16) devrait faire ce dont vous avez besoin.

strtol strtoul


0 commentaires

14
votes

1 commentaires

J'ai eu le follage: 1500-030: (i) Information: STD :: Num_GET >> :: _ getffld (Char *, Istreambuf_iterator > &, Istreambuf_iterator > &, Cons-Locale &): Une optimisation supplémentaire peut être atteinte en recompilant et en spécifiant l'option MaxMEM avec une valeur supérieure à 8192.



17
votes

Utilisez std: stoi comme (en C ++ 11 uniquement): xxx

Démo en ligne


2 commentaires

Un entier non signé tel que 0xFeedDCC va probablement lancer std :: out_of_range. Correction: Utiliser STD :: Soul


Si la chaîne est trop longue, elle ne convertira pas en un nombre correct (INT ne peut pas tenir autant). Je n'aime pas vraiment cette réponse.