作者leatica (噗妞兔姆妞)
看板java
標題[問題] 位元運算問題,將byte填進int內
時間Tue Jan 5 17:25:22 2010
大家好
最近初學java
因為在下目前是在用有關繪圖的東西
然後是用在Android軟體開發上,所以JAVA的版本我好像不太清楚
但我想這應該沒麼大礙
在處理圖像的時候
他有個格式叫做ARGB_8888
就是alpha 8bit Red 8bit Green 8bit ......
總之一個像素就是由一個整數組成 e.g. 紅色 0xFFFF0000 藍色 0xFF0000FF
---
Q1:
那現在就是我有一個byte型態的資料計載紅色的值,假設紅色值是255(0xFF)
在Debug Window看到的是 -128
然後我希望填到整數0xFF000000的右邊數來第5, 6個位置
使得結果變成 0xFFFF0000
我是這樣寫的
byte tmp_A = -128;
int tmp_B = 0xFF000000;
tmp_B |= (tmp_A << 16);
結果輸出tmp_B似乎不是我要的0xFFFF0000 (/‵Д′)/~ ╧╧
請問這之中有什麼誤會嗎?
Q2:
byte tmp_c = 0xFF;
好像不能直接這樣寫對吧?
我這邊這樣寫組譯不給過
先謝謝囉
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.168.152.122
推 rofellosx:不然你認為tmp_B變多少.. 01/05 17:46
→ leatica:我是希望tmp_B變成0xFFFF0000,這值應該不是-128吧 01/05 18:04
抱歉,數字抄錯
但還是不太懂
※ 編輯: leatica 來自: 218.168.152.122 (01/05 18:27)
推 snowlike:(原本是-128)tmp_A&0xff<<16,建議寫成tmp_A=(byte)255 01/05 18:49
→ leatica:謝謝樓上 01/05 19:31