2
我想交換像素的紅色和藍色值。應該這樣做的方法接收像素爲int 0xAARRGGBB,其中AA是alpha的十六進制值,r,g,b是顏色的例如。 0xFF0000FF爲完全不透明的藍色。在Java中交換十六進制int元素
我會將該值轉換爲一個字符串,然後使用substring()將其剪除,並按修改後的順序將其拼接在一起,然後將結果轉換回int。這看起來不夠好,不起作用:
public int filterRGB(int x, int y, int pixel) {
int filteredPixel;
String s, a, r, g, b, res;
s = Integer.toString(pixel);
a = s.substring(2,4);//alpha
r = s.substring(4,6);//r
g = s.substring(6,8);//g
b = s.substring(8,10);//b
res = "0x" + a + b + g + r;
filteredPixel = Integer.parseInt(res);
return filteredPixel;
它不工作的原因似乎是子串(8,10)。該行之後的代碼未執行。它確實與子字符串(8,9)一起工作,但是會切斷藍色的第二個十六進制值。我不知道如何獨自看這個,所以有人可以解釋一下嗎?
'String.toHexString()' – Mordechai