2013-07-30 14 views

Odpowiedz

11

Aby odwrócić tę operację, wystarczy połączyć bajty w liczbę całkowitą. Po prostu użyj lewej zmiany i dodaj je, a to zadziała.

var rgb = (red << 24) + (green << 16) + (blue << 8) + (alpha); 

Alternatywnie, aby to bezpieczniejsze, można najpierw, a każdy z nich z 0xFF:

var r = red & 0xFF; 
var g = green & 0xFF; 
var b = blue & 0xFF; 
var a = alpha & 0xFF; 

var rgb = (r << 24) + (g << 16) + (b << 8) + (a); 

(można używać logiczną OR | zamiast + tutaj, wynik będzie taki sam).

+0

To naprawdę działa. Myślałem, że tak nie jest, ponieważ wartość wejściowa nie była taka sama jak wartość wyjściowa. Nadal nie jest. Nie wiem, jakie są tam dodatkowe bity, ale myślę, że nie mają znaczenia. – skerit

+0

Należy pamiętać, że to nie działa, gdy r/g/b/a jest liczbą całkowitą. Należy dodać je do bajtu przed ich dodaniem. – lunatix

Powiązane problemy