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
Susan SarandonOriginal
2024-12-28 13:03:12510Durchsuche

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;

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;
}

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);

Andere Ansätze

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

unsigned int x = boost::lexical_cast<int>("0x0badc0de");

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"); 

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!

Stellungnahme:
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