Problem beim rechnen mit uint32 uint64

  1. 7 weeks ago

    Norbert K

    Apr 9 Testers, Xojo Pro Germany
    Edited 7 weeks ago

    Hallo folgendes Problem:
    Ich bin gerade dabei eine Code aus C++ zu übersetzten. Nur komme ich leider nicht auf das richtige Ergebniss.

    Bei folgender Aufgabe bekomme ich in C++ folgenden wert für 'm1' zurück: 1959434785

    uint64_t tmp = 4703528431752368145;
    uint32_t m1 = (tmp >> 32) ^ tmp;
    cout << "m1 " << m1 << endl;

    In Xojo 2019r3.1 bekomme ich folgenden wert für 'm1' zurück: 0

    var tmp as uint64 = 4703528431752368145
    var m1 as uint32 = Bitwise.ShiftRight(tmp,32) ^ tmp
    system.debuglog "m1 " + m1.totext

    Hat jemmand eine Idee?

    Danke & Gruß Norbert

    Norman hat recht:

    Dim tmp As UInt64 = 4703528431752368145
    Dim m0 As UInt32 = Bitwise.ShiftRight(tmp,32)
    Dim m1 As UInt32 = Bitwise.BitXor(m0, tmp)
    
    Break

    Da kommt auch in Xojo dann 1959434785 raus

  2. Norman P

    Apr 9 Testers, Xojo Pro outside LMAO !!!!!!!
    Edited 7 weeks ago

    var tmp as uint64 = 4703528431752368145

    Ich würde den Wert in C ++ und In Xojo überprüfen, da ich vermute, dass hier das Problem beginnt

    EDIT : Das ^ in C ++ ist XOR
    In Xojo seine Potenzierung
    Das scheint der ganze Fehler zu sein

  3. Christian S

    Apr 9 Testers, Xojo Pro, XDC Speakers, Third Party Store Answer Germany

    Norman hat recht:

    Dim tmp As UInt64 = 4703528431752368145
    Dim m0 As UInt32 = Bitwise.ShiftRight(tmp,32)
    Dim m1 As UInt32 = Bitwise.BitXor(m0, tmp)
    
    Break

    Da kommt auch in Xojo dann 1959434785 raus

  4. Norbert K

    Apr 10 Testers, Xojo Pro Germany

    Danke

or Sign Up to reply!