這段代碼完美地適用於我正在嘗試做的事(設置bufferedimage上像素的顏色/ alpha),但我不知道它爲什麼可行。語法是什麼意思?我無法找到關於它的文檔。這個語法是什麼意思將argb轉換爲整數?
int rgb = (alpha << 24) | red << 16) | (green << 8) | blue;
此外,結果是什麼形式? (會叫什麼) 最後,有沒有辦法將img.getRGB()轉換爲選擇a,r,g,b值?
這段代碼完美地適用於我正在嘗試做的事(設置bufferedimage上像素的顏色/ alpha),但我不知道它爲什麼可行。語法是什麼意思?我無法找到關於它的文檔。這個語法是什麼意思將argb轉換爲整數?
int rgb = (alpha << 24) | red << 16) | (green << 8) | blue;
此外,結果是什麼形式? (會叫什麼) 最後,有沒有辦法將img.getRGB()轉換爲選擇a,r,g,b值?
它是使用左移位運算符來構造一個位掩碼來構造其定義here
的<<
的ARGB值是left shift operator:它移動的位在左邊的操作數由數左在右側操作數中的位置。
的|
是bitwise OR operator:它確實在操作數的每一位或操作,返回結果和每個比特爲1
如果要麼操作了1
那裏,或者0
如果既不沒有。
所以:
alpha
值並移動它24位到左側red
值和它移位16位到左側所以說你開始與
alpha = 106 (in binary: 00000000 00000000 00000000 01101010) red = 255 (in binary: 00000000 00000000 00000000 11111111) green = 15 (in binary: 00000000 00000000 00000000 00001111) blue = 170 (in binary: 00000000 00000000 00000000 10101010)
所以首先它改變的alpha
24位左邊的值:
alpha = 00000000 00000000 00000000 01101010 << 24 becomes: alpha = 01101010 00000000 00000000 00000000
然後red
16位左:
red = 00000000 00000000 00000000 11111111 << 16 becomes: red = 00000000 11111111 00000000 00000000
然後8位左:
green = 00000000 00000000 00000000 00001111 << 9 becomes: green = 00000000 00000000 00001111 00000000
然後,它與blue
或運算它們放在一起:
alpha = 01101010 00000000 00000000 00000000 red = 00000000 11111111 00000000 00000000 green = 00000000 00000000 00001111 00000000 blue = 00000000 00000000 00000000 10101010 ------------------------------------------- rgb = 01101010 11111111 00001111 10101010
該語法結合的4個8位整數範圍從0到255比特到單個32位整數。
的<<
操作者移動每個8位數目成在32位數字的最終位置,添加零到「尾巴」根據需要;然後|
操作員將這四個部分組合成單個數字。
aaaaaaaa 00000000 00000000 00000000 // aaaaaaaa << 24
00000000 rrrrrrrr 00000000 00000000 // rrrrrrrr << 16
00000000 00000000 gggggggg 00000000 // gggggggg << 8
00000000 00000000 00000000 bbbbbbbb // bbbbbbbb
-----------------------------------
aaaaaaaa rrrrrrrr gggggggg bbbbbbbb
上述每個字母對應於每個所述四個組件的各個位:
aaaaaaaa
是alpha
rrrrrrrr
的八位是的red
gggggggg
八個比特在八位bbbbbbbb
a re的八位blue
簡短回答:'<<'表示位移。 http://stackoverflow.com/questions/141525/absolute-beginners-guide-to-bit-shifting可以提供更多關於它的信息 – 2015-03-31 17:04:38
強相關:[如何將ARGB打包爲一個唯一的整數?](http:// stackoverflow .COM /問題/ 7358533 /如何對包-ARGB到一個整數唯一)。 – rgettman 2015-03-31 17:06:43