E.Wrtal: Bit-Operatoren

Beitrag lesen

Hallo,

wie z.B.: zwei Masken bitweise mit dem &-Operator verbunden werden:
          "#FF00FF" & "#0000FF" müsste "0000FF" ergeben, ergibt aber bei mir 0.

Deine Schreibweise sieht auch ganz danach aus, als ob du versuchst, eine UND-Verknüpfung von zwei Strings zu machen, anstatt zwei Zahlen. Wenn du die Strings einsetzt, ist das Ergebnis 0 korrekt:
Da der Operator & nun mal numerische Operanden erfordert, werden sie implizit umgewandelt. Und der numerische Wert von "#FF00FF" ist eben 0, weil die implizite Umwandlung beim ersten nicht-numerischen Zeichen abbricht.
Um das Ergebnis zu erzielen, das dir vorschwebt, müsstest du die beiden Strings selbst in eine Zahl umwandeln. Erst müsstest du das "#" am Anfang  z.B. mit slice() abschneiden, dann den Rest mit parseInt() in eine Zahl umwandeln, wobei du ausnutzt, dass der optionale zweite Parameter von parseInt() die Zahlenbasis angibt.

Wenn du auf dem Weg dorthin immer noch Probleme hast, kannst du gern nochmal nachfragen, aber versuch bitte erst einmal zu verstehen, warum es bisher nicht geklappt hat.

Übrigens:
var a = 0xFF00FF & 0x0000FF;
alert (a);
ergibt tatsächlich 255, also 0xFF, wie zu erwarten wäre. Die Bitoperation an sich funktioniert also.

So long,

Martin

Danke! Das war eine gute Erklärung!

Schöne Grüße   E.Wrtal