這應該很簡單,但我無法更改某些使用按位運算符並轉換爲Java的C代碼。Java中按位運算符作用於兩個字節
在C我有:
unsigned short Color(byte r, byte g, byte b)
{
return(((unsigned short)g & 0x1F)<<10 | ((unsigned short)b & 0x1F)<<5 | (unsigned short)r & 0x1F);
}
此功能,色彩,16位返回他們在那裏的15代表紅色,綠色和藍色通道3個5位值。我試圖在Java中做類似的事情,除了我遇到數據類型的問題。
在java中我有:
int r=someval, g=anotherval, b=yetanotherval;
而且我想這些整數轉換爲2字節的數據類型,並使用相同的按位/移位操作同上。
解決此問題的最佳方法是什麼?我正在考慮一個2字節的數組,但似乎沒有必要。
編輯
所以我給它一個嘗試在Java中與短褲,但似乎仍然是一個問題。我開始簡單的搭配:
short r=someval, g=anotherval, b=yetanotherval;
short colorData = g & 0x001F;
但是編譯器會抱怨:「不能轉換從int到short」
請注意,C中的(無符號短符號)投射根本沒有意義,因爲算術/位運算自變量會自動提升爲[unsigned] int,而「&」的結果也將爲int。 – Vovanium 2010-11-11 14:55:44