Bestimmtes Bit im Hex-Wert auf 1 setzten

  • Hallo,

    ich möchte in einem Hex-Wert das 8. Bit von Rechts auf 1 setzten.
    Hab's mit BitOr versucht, aber ohne Erfolg.
    Z.B. sollte aus "0x563" "0x5e3" werden

    Code
    $ohne = StringToBinary("0x563")
    $mask = StringToBinary("0x80")
    $res = StringToBinary(BitOR($ohne, $mask))
    MsgBox(4096, "Result", BinaryToString($res))

    Wo liegt der Fehler?

    Danke,
    Michael

  • Warum StringToBinary?

    AutoIt
    $a = 0x563 	; 				0x563 = 1379 = 10101100011
    $b = 0x80	; 				0x80 = 128 =      10000000
    $res = BitOR($a, $b) ; -> 	0x5E3 = 1507 = 10111100011
    MsgBox(4096, "Result", Int($res))

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Wenn die Stelle des zu setzenden Bits variabel ist, kannst du die "Mask"-Zahl auch einfach ausrechnen, ohne von Basis 2 zu Basis 16 umzurechnen: Wenn du das n-te Bit auf 1 setzen möchtest, verwende als Maske 2^(n-1). Einfache Mathematik. :D

  • Habe kurz 2 Funktionen zusammengebastelt. Sie sind nur kurz getestet, es sollte vllt nochmal jemand drüberschauen. Nach meiner Einschätzung tun sie genau was du willst.

    lg
    M