[問題] 位元運算問題,將byte填進int內

看板java作者 (噗妞兔姆妞)時間14年前 (2010/01/05 17:25), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/2 (看更多)
大家好 最近初學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

01/05 17:46, , 1F
不然你認為tmp_B變多少..
01/05 17:46, 1F

01/05 18:04, , 2F
我是希望tmp_B變成0xFFFF0000,這值應該不是-128吧
01/05 18:04, 2F
抱歉,數字抄錯 但還是不太懂 ※ 編輯: leatica 來自: 218.168.152.122 (01/05 18:27)

01/05 18:49, , 3F
(原本是-128)tmp_A&0xff<<16,建議寫成tmp_A=(byte)255
01/05 18:49, 3F

01/05 19:31, , 4F
謝謝樓上
01/05 19:31, 4F
文章代碼(AID): #1BGmM5Zs (java)
文章代碼(AID): #1BGmM5Zs (java)