Konvertierung einer C-Hex-Zeichenfolge in eine vorzeichenbehaftete Ganzzahl
Angenommen, Sie haben eine hexadezimale Zeichenfolge und möchten diese in eine vorzeichenbehaftete 32-Bit-Ganzzahl umwandeln C . Bei der hexadezimalen Zeichenfolge „ffffefffe“ lautet die Binärdarstellung beispielsweise 11111111111111101111111111111110. Dies stellt eine vorzeichenbehaftete Ganzzahl von -65538 dar.
Konvertierungsverfahren:
Um dies durchzuführen Für eine effektive Konvertierung verwenden Sie std::stringstream als folgt:
unsigned int x; std::stringstream ss; ss << std::hex << "fffefffe"; ss >> x;
Zum Beispiel ergibt das folgende Codefragment -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; }
C 11 String-Konvertierungsfunktionen:
Für C 11 oder höher vereinfachen die neuen Dienstprogramme zur Zeichenfolgen-zu-Zahlen-Umwandlung diesen Vorgang. Die Funktionen „stol“ (String zu Long) und „Stoul“ (String zu unsigned Long) bieten dünne Wrapper um die String-Konvertierungsfunktionen von C.
std::string s = "0xfffefffe"; unsigned int x = std::stoul(s, nullptr, 16);
Zusätzliche Überlegungen:
Beachten Sie, dass Boost auch hilfreiche Funktionen für diese Konvertierung bietet, einschließlich Fehlerprüfungsfunktionen.
Aus Gründen der Einfachheit und Portabilität wird es jedoch empfohlen um die hier vorgestellten integrierten Stringstream- oder C 11-Dienstprogrammfunktionen zu verwenden.
Das obige ist der detaillierte Inhalt vonWie konvertiert man einen C-Hex-String in eine vorzeichenbehaftete Ganzzahl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!