Daniel Thoma: int alpha = (argb >> 24) & 0xff;

Beitrag lesen

Hallo Harlequin,

24 bedeutet eine verschiebung oder Rotation um 24 bit (bin mir jetzt nicht ganz sicher, ist aber hier egal)

Genau genommen weder das eine noch das andere, was dafür spricht, dass der Autor des Codes die genaue Semantik auch nicht kannte ;-)

macht einen right-shift mit sign-extension, abhängig vom Vorzeichenbit wird also 0 oder 1 vorangestellt.

Daher braucht man auch noch das & 0xFF, um evtl aufgefüllte Einsen wieder los zu werden. Hätte man den Operator >>> verwendet, der immer mit Null auffüllt, hätte man sich das sparen können.
Man hätte natürlich auch gleich (color & 0xFF000000) != 0 nehmen können, womit man sich das Shiften spart, auch wenn es darauf natürlich nicht ankommt und es der Compiler möglicherweise wegoptimiert bekommt.

Grüße

Daniel