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