Hexrechnung

  • Hallo erstmal,

    Ich habe schon verschiedene möglichkeiten probiert, komme aber nur auf komische Werte. Mein Script sieht momentan so aus:

    [autoit]


    $ADDR_Base = 0x123ABC00
    $ADDR_Offset = 0x2BC12

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

    $A = Hex($ADDR_Base + $ADDR_Offset,8)
    msgbox (0,"$A",$A) ; -> 123D7812

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

    $B = Hex($A + 0x54,8)
    msgbox (0,"$B",$B) ; -> 00000000

    [/autoit]


    Leider gibt die Variable $B in der msgbox den falschen Wert aus.

    Komischerweise funktioniert es aber wenn ich die vorher definierten Variablen in der Rechnung benutze:

    [autoit]


    $ADDR_Base = 0x123ABC00
    $ADDR_Offset = 0x2BC12

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

    $A = Hex($ADDR_Base + $ADDR_Offset,8)
    msgbox (0,"$A",$A) ; Output -> 123D7812

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

    $B = Hex($ADDR_Base + $ADDR_Offset + 0x54,8)
    msgbox (0,"$B",$B) ; Output -> 123D7866

    [/autoit]

    Könnte mir jemand vielleicht sagen was ich falsch gemacht habe?

    Gruß,
    danv

    Einmal editiert, zuletzt von danv (19. Januar 2013 um 11:22)

  • Hi,

    Zitat

    Könnte mir jemand vielleicht sagen was ich falsch gemacht habe?

    ja^^
    Du hast dir die Daten nicht genau angeschaut....

    123D7812 <> 0x123D7812

    jetzt klar?

    spoiler

    Hex () gibt einen STRING zurück und benötigt als Parameter einen INTEGER. Wenn du nun aber HEX () mit einem String statt eines Integer fütterst....geht das natürlich schief

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (19. Januar 2013 um 02:35)

  • Danke Andy funktioniert jetzt :party:

    Rechne einfach mit Integer Werten und gebe den Hex Wert aus.

    [autoit]


    $ADDR_Base = Int(0x123ABC00)
    $ADDR_Offset = Int(0x2BC12)
    $ADDR_Offset2 = Int(0x54)

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

    $A = $ADDR_Base + $ADDR_Offset
    msgbox (0,"$A","0x"&Hex($A)) ; Output -> 0x123D7812

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

    $B = $A + $ADDR_Offset2
    msgbox (0,"$B","0x"&Hex($B)) ; Output -> 0x123D7866

    [/autoit]

    Grüße,
    danv

  • Klar kannst du in Hex rechnen:

    [autoit]


    $ADDR_Base = 0x123ABC00
    $ADDR_Offset = 0x2BC12

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

    $A = $ADDR_Base + $ADDR_Offset
    msgbox (0,"$A","0x"&Hex($A,8)) ; -> 123D7812

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

    $B = $A + 0x54
    msgbox (0,"$B","0x"&Hex($B,8)) ; -> 00000000

    [/autoit]

    Hex() dient nur zum Anzeigen der Hex Werte!

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Rechne einfach mit Integer Werten und gebe den Hex Wert aus.


    Rechne einfach mit Zahlen/Werten und gebe das Ergebnis im gewünschten Zahlensystem aus. ;)

    [autoit]

    $ADDR_Base = 0xFF00 ; Hexadezimal
    $ADDR_Offset = 255 ; Dezimal

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

    $A = $ADDR_Base + $ADDR_Offset
    msgbox (0, "$A", StringFormat ("0x%08X",$A))

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

    $B = $A + 0xFF0000
    msgbox (0, "$B", StringFormat ("0x%08X",$B))

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

    $C = $B + 4278190080
    msgbox (0, "$C", StringFormat ("0x%08X",$C))

    [/autoit]

    Grüße
    Greenhorn