Conversion de chaîne hexadécimale C en entier signé
Supposons que vous ayez une chaîne hexadécimale et que vous souhaitiez la convertir en un entier signé de 32 bits dans C. Par exemple, étant donné la chaîne hexadécimale « fffefffe », la représentation binaire est 1111111111111110111111111111110. Cela représente un entier signé de -65538.
Procédure de conversion :
Pour effectuer cette opération conversion efficace, utilisez std :: stringstream comme suit :
unsigned int x; std::stringstream ss; ss << std::hex << "fffefffe"; ss >> x;
Par exemple, l'extrait de code suivant donne -65538 :
#include <sstream> #include <iostream> int main() { unsigned int x; std::stringstream ss; ss << std::hex << "fffefffe"; ss >> x; // Output as a signed type std::cout << static_cast<int>(x) << std::endl; }
Fonctions de conversion de chaîne C 11 :
Pour C 11 ou version ultérieure, les nouveaux utilitaires de numérotation de chaîne simplifient ce processus. Les fonctions "stol" (chaîne en long) et "stoul" (chaîne en long non signé) fournissent des enveloppes fines autour des capacités de conversion de chaîne du C.
std::string s = "0xfffefffe"; unsigned int x = std::stoul(s, nullptr, 16);
Considérations supplémentaires :
Notez que Boost fournit également des fonctionnalités utiles pour cette conversion, notamment des capacités de vérification des erreurs.
Cependant, pour des raisons de simplicité et de portabilité, il est Il est recommandé d'utiliser les fonctions utilitaires stringstream ou C 11 intégrées présentées ici.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!