Bug in Autoit 3.3.8.1 der in 3.3.6.1

  • Hi,
    Ich hab evtl. einen Bug in der Hex() Funktion gefunden.
    Bei 3.3.8.1 gibt dies hier 000000 zurück

    [autoit]

    Hex(255*256^2+255*256+255, 6)

    [/autoit]


    Während es normalerweise FFFFFF zurückgeben sollte, was in 3.3.6.1 noch funktioniert.

    MfG Molaynox

  • Hi,
    Du kannst gerne folgendes Test-Script anhängen:

    [autoit]

    ;<AutoItScript>
    #NoTrayIcon ;ohne SysTray-Icon, hängende Prozesse mit TaskMan beenden
    Opt('MustDeclareVars', 1) ;0=ohne, 1=erfordert Variablen-Deklaration
    Const $Author='HexTest.au3 ©2012 by ytwinky, MD';
    Global $s='Hex(-1, 8)=' &Hex(-1, 8) &@Lf &'Hex(4294967295, 8)=' &Hex(4294967295, 8) &@Lf &'Hex(Int(2^32)-1, 8)=' &Hex(Int(2^32)-1, 8) &@Lf &'Hex(Int(255*256^3+255*256^2+255*256+255), 8)=' &Hex(Int(255*256^3+255*256^2+255*256+255), 8)
    MsgBox(0, $Author, $s &@Lf &'Hex(255*256^2+255*256+255, 6)=' &Hex(Int(255*256^2+255*256+255), 6))
    ;</AutoItScript>

    [/autoit]

    Du kannst das Script natürlich auch vorher ausführen, um zu sehen, was es macht ;)
    ..Dass bei den 'großen' Integerwerten (nun) die Int-Funktion benutzt werden MUSS, war mir noch gar nicht aufgefallen..
    (Ich muß wohl nicht erwähnen, dass 4 mal FFFFFFFF und einmal FFFFFF angezeigt wird..)
    [Edit]
    Ich hab grad nochmal probiert: in der aktuellen Beta muß bei den Doubles auch Int(..) benutzt werden..
    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

    Einmal editiert, zuletzt von ytwinky (9. März 2012 um 17:52)

  • Es ist nicht so, dass int benutzt werden muss bei großen Integer-Werten, sondern dann wenn die Variable den Typ Double hat. Hex verwendet anscheinend die Darstellung der Zahl im Speicher, um den String zu erstellen und bei Double ist das der IEEE 754-Standard. Wenn du einen Integer-Hex haben willst, musst du zuerst einen Int daraus machen.

    Ich würde das jetzt nicht als Bug sondern als Feature sehen und nur eine falsche Dokumentation bemängeln ;)