convert byte * to DWORD



  • Hallo,

    ich habe ein BYTE-Array mit Daten. Ich weiss das an Stelle xy ein 32 bit signed integer kommt und möchte diesen auslesen. Dazu hab ich hier eine Funktion, die aber leider für negative Zahlen nicht geht. Ich muss irgend wie bytes umherschieben oder wie war das noch?

    long GetDataLong( const BYTE * Buf, DWORD & Pos)
    {
            long value = (long &)Buf[Pos];
            Pos += 4;
            return value;
    }
    
    //...
    byte recv_bytes [MAX_LENGTH];
    //...
    DWORD Pos = 12;
    long amount = GetDataLong(recv_bytes , Pos );
    

    Danke für die Hilfe
    MfG Winnie



  • DWORD ist nen Typ ohne Vorzeichen der dazu da ist nen 32Bit großen Wert zu speichern.
    Wenn du da ne zahl hast die positiv und negativ sein kann, dann musst du nen 32bit typ mit vorzeichen nehmen.



  • Vergiss was ich gesagt habe.

    merke: man sollte nicht angetrunken im c++ forum posten 😃



  • Winnie schrieb:

    Dazu hab ich hier eine Funktion, die aber leider für negative Zahlen nicht geht.

    Vielleicht kannst du uns ja noch verraten, was du hier unter "geht nicht" verstehst. Dann können wir dir vermutlich besser helfen. 😉

    Eine Sache, die mir so spontan einfällt, wäre little endian <-> big endian Darstellung. Ohne meine Kristallkugel ist das aber reines Rätselraten.



  • Hallo,

    tut mir Leid. Hat sich erledigt. Die Funktion stimmt so, es lag an der falschen umwandlung vom Ergebnis in einen String.

    MfG Winnie


Anmelden zum Antworten