簡體   English   中英

移位整數以獲得ARGB灰色

[英]Shifting an integer to get an ARGB gray

假設我有:

int x = 140;

我想得到以下結果:

int y = new Color(x, x, x).getRGB()

從Java API文檔中:

的getRGB()
獲取表示默認RGB ColorModel中顏色的RGB值。
(位24-31是0xff,16-23是紅色,8-15是綠色,0-7是藍色)

但是我不確定變速如何工作,對嗎?

 int y = 0xff + x<<16 + x<<8 + x;

如果您不忘記正確移動Alpha值,則您的方法將行得通。

int y = (0xff<<24) + (x<<16) + (x<<8) + x;

但是,一種常見的方法是直接移位位(結合左移和按位或)。 我猜想是因為按位應用比加法更快,並且可讀性足以為人類操作ARGB值。

int y = (0xff<<24) | (x<<16) | (x<<8) | x;

您可以這樣查看。

(0xff << 24) =>  0xff000000
| (x<<16)    =>  0xff8c0000
| (x<<8)     =>  0xff8c8c00
| x          =>  0xff8c8c8c

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM