Heim > Backend-Entwicklung > C++ > Wie kann ich in C eine Hex-Zeichenfolge in eine vorzeichenbehaftete Ganzzahl umwandeln?

Wie kann ich in C eine Hex-Zeichenfolge in eine vorzeichenbehaftete Ganzzahl umwandeln?

Susan Sarandon
Freigeben: 2024-12-28 13:03:12
Original
558 Leute haben es durchsucht

How Can I Convert a Hex String to a Signed Integer in C  ?

Hex-String in vorzeichenbehaftete Ganzzahl in C konvertieren

Viele Situationen erfordern die Konvertierung eines hexadezimalen Strings in eine vorzeichenbehaftete Ganzzahl in C. Beispielsweise könnten Sie eine Hex-Zeichenfolge wie „ffffefffe“ haben, die einen Binärwert von 11111111111111101111111111111110 darstellt, der der vorzeichenbehafteten Ganzzahl -65538 entspricht.

Lösung mit std::stringstream

Ein Ansatz, um diese Konvertierung zu erreichen, umfasst mit std::stringstream:

unsigned int x;   
std::stringstream ss;
ss << std::hex << "fffefffe";
ss >> x;
Nach dem Login kopieren

Nicht-negative Zahlen

Um nicht-negative Zahlen zu verarbeiten, können Sie das folgende Beispiel verwenden:

#include <sstream>
#include <iostream>

int main() {
    unsigned int x;   
    std::stringstream ss;
    ss << std::hex << "0000000A";
    ss >> x;
    std::cout << static_cast<int>(x) << std::endl;
}
Nach dem Login kopieren

Dies ergibt 10 als Ergebnis, was für die Hex-Zeichenfolge korrekt ist „0000000A“.

C 11 String-to-Number-Funktionen

In C 11 können Sie String-to-Number-Funktionen wie std::stoul verwenden:

std::string s = "0xfffefffe";
unsigned int x = std::stoul(s, nullptr, 16);
Nach dem Login kopieren

Andere Ansätze

Alternativ können Sie Bibliotheken wie Boost nutzen, die Funktionen wie lexical_cast:

unsigned int x = boost::lexical_cast<int>("0x0badc0de");
Nach dem Login kopieren

Rolling Your Own lexical_cast

bieten Wenn Sie einen einfacheren Ansatz ohne Abhängigkeiten bevorzugen, können Sie eine benutzerdefinierte Implementierung von verwenden lexical_cast:

template<typename T2, typename T1>
inline T2 lexical_cast(const T1 &amp;in) {
    T2 out;
    std::stringstream ss;
    ss << in;
    ss >> out;
    return out;
}

unsigned int x = lexical_cast<unsigned int>("0xdeadbeef"); 
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich in C eine Hex-Zeichenfolge in eine vorzeichenbehaftete Ganzzahl umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage