Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Digitale Signaturen (Authenticode) von Dateien auslesen

  Alt 15. Feb 2023, 16:00
Was bedeutet der erste Stern in diesem Aufruf
Code:
cbCurrData = XCH_WORD_LITEND(*(WORD *)(pbCurrData + 2)) + 4;
Was genau wird da übergeben? Ein Pointer auf einen Pointer auf ein Word?
ChatGPT meint dazu:
Zitat:
Was macht der folgende Code?
Code:
#define XCH_WORD_LITEND(num) \
    (WORD)(((((WORD)num) & 0xFF00) >> 8) | ((((WORD)num) & 0x00FF) << 8))

cbCurrData = XCH_WORD_LITEND(*(WORD *)(pbCurrData + 2)) + 4;

Die Code-Zeile liest ein 16-Bit-Wort aus dem Speicher, das an der Adresse pbCurrData+2 liegt. Dabei wird angenommen, dass die Byte-Reihenfolge des Worts in umgekehrter Reihenfolge (Little Endian) vorliegt. Das ausgelesene Wort wird dann in ein neues 16-Bit-Wort geschrieben, dessen Byte-Reihenfolge umgekehrt ist (Big Endian). Das Ergebnis wird in die Variable cbCurrData geschrieben, nachdem 4 addiert wurde.

Die Funktion XCH_WORD_LITEND dient dazu, die Byte-Reihenfolge von 16-Bit-Wörtern in umgekehrter Reihenfolge (Little Endian) in die in der Regel verwendete Reihenfolge (Big Endian) umzuwandeln, damit die Wörter auf Systemen mit unterschiedlichen Byte-Reihenfolgen korrekt interpretiert werden können.
  Mit Zitat antworten Zitat