AutoIt Signed/Unsigned Bug?

  • Hi,
    für mein Projekt muss ich Hex Strings in ihren jewailligen Datentyp umwandeln. Aber komischerweise behandelt AutoIt int64 und uint64 gleich.

    Der Folgende Code soll einen Hex Wert in einen signed long long(int64) und in einen unsigned long long(uint64) umwandeln, aber leider ist die Konsolenausgabe gleich:

    [autoit]

    $xVal = "0xA422D6984D5E5458"

    [/autoit][autoit][/autoit][autoit]

    $tInt = DllStructCreate("int64;")
    DllStructSetData($tInt,1,$xVal)
    ConsoleWrite("Signed:" & DllStructGetData($tInt,1) & @CRLF)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $tuInt = DllStructCreate("uint64;")
    DllStructSetData($tuInt,1,$xVal)
    ConsoleWrite("Unsigned:" & DllStructGetData($tuInt,1) & @CRLF)

    [/autoit]

    Wenn es ein Bug ist, werde ich ihn Reporten, wenn dem aber nicht so ist, gibt es ein Workaround dafür?
    Schon mal Danke im Vorraus :)

  • AutoIt kennt intern keine vorzeichenlosen Zahlen. Daher wird uint64 nicht korrekt abgebildet. Ein uint wird auf einen int64 gelegt.