Heim >Backend-Entwicklung >C++ >Wie konvertiere ich einen hexadezimalen String in ein Byte-Array in C?

Wie konvertiere ich einen hexadezimalen String in ein Byte-Array in C?

Susan Sarandon
Susan SarandonOriginal
2024-12-24 11:50:14547Durchsuche

How to Convert a Hexadecimal String to a Byte Array in C  ?

Konvertierung von Hexadezimalzeichenfolgen in Byte-Arrays

In Programmierszenarien ist es häufig erforderlich, Hexadezimalzeichenfolgen zu konvertieren, die Binärdaten kompakt darstellen Format, in Byte-Arrays. Byte-Arrays eignen sich besser für die direkte Datenbearbeitung und -speicherung.

Ein effektiver Ansatz für diese Konvertierung besteht in der Verwendung der Standardfunktion strtol(). Diese Funktion interpretiert eine Ziffernfolge als eine durch die Basis angegebene Ganzzahl und ermöglicht es uns, die ganzzahlige Darstellung unserer Hexadezimalzeichen zu extrahieren.

Hier ist eine Implementierung in C:

std::vector<char> HexToBytes(const std::string& hex) {
  std::vector<char> bytes;

  for (unsigned int i = 0; i < hex.length(); i += 2) {
    std::string byteString = hex.substr(i, 2);
    char byte = (char) strtol(byteString.c_str(), NULL, 16);
    bytes.push_back(byte);
  }

  return bytes;
}

Diese Funktion verwendet eine Schleife zur iterativen Untersuchung der Hex-Zeichenfolge in Zeichenpaaren. Für jedes Paar wird ein Teilstring erstellt, der ein einzelnes Hex-Byte darstellt, und mit strtol() in ein Zeichen umgewandelt, wobei eine Basis von 16 für die hexadezimale Interpretation bereitgestellt wird. Das resultierende Zeichen wird dann an den Byte-Vektor angehängt.

Mit dieser Funktion können Sie mühelos hexadezimale Zeichenfolgen in Byte-Arrays konvertieren und so eine effiziente Verarbeitung und Speicherung von Binärdaten ermöglichen.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich einen hexadezimalen String in ein Byte-Array in C?. 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