Heim > Backend-Entwicklung > C++ > Wie kann ich einen Hex-String in ein Byte-Array in C konvertieren?

Wie kann ich einen Hex-String in ein Byte-Array in C konvertieren?

Patricia Arquette
Freigeben: 2025-01-01 01:22:16
Original
643 Leute haben es durchsucht

How Can I Convert a Hex String to a Byte Array in C  ?

Konvertieren eines Hex-Strings in ein Byte-Array

So konvertieren Sie einen Hex-String variabler Länge wie „01A1“ in ein Byte-Array Es gibt mehrere Methoden, die Sie in Betracht ziehen können:

Verwenden eines Vektors von Zeichen

Der folgende Codeausschnitt zeigt, wie ein Zeichenvektor zum Speichern des konvertierten Byte-Arrays verwendet wird:

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;
}
Nach dem Login kopieren

Diese Funktion verwendet eine Hex-Zeichenfolge als Eingabe und durchläuft diese Zeichen paarweise. Jedes Zeichenpaar wird mithilfe der Funktion strtol in ein einzelnes Byte umgewandelt, das die Hex-Zeichenfolge als hexadezimale Darstellung interpretiert und den entsprechenden Dezimalwert zurückgibt. Das resultierende Byte wird dann an den Vektor angehängt.

Verwendung eines Zeichen-Arrays

Alternativ können Sie das Byte-Array in einem Zeichen-Array speichern:

char* HexToBytes(const std::string& hex, int& length) {
  length = hex.length() / 2;
  char* bytes = new char[length];

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

  return bytes;
}
Nach dem Login kopieren

In diesem Fall übernimmt die Funktion die Hex-Zeichenfolge und eine Ganzzahlreferenz, die die resultierende Länge des Byte-Arrays speichert. Es weist dem Byte-Array dynamisch Speicher zu und füllt es auf ähnliche Weise wie die vektorbasierte Lösung.

Beide Ansätze erzeugen ein Byte-Array, das in eine Datei geschrieben und korrekt als dargestellte Binärdaten interpretiert werden kann durch die ursprüngliche Hex-Zeichenfolge.

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