我正在嘗試編寫一個方法,該方法接受一個 32 位 int 和一個表示 32 位 int 中一個字節(jié)的整數(shù),并返回傳入的字節(jié)。即 getByte(0x56781234, 0); // => 0x34。我的思考過程是,如果我可以將 int 右移到我想要的字節(jié)是 int 的最后一個字節(jié)的位置,我可以將其與 0xFF 進行 AND 運算以獲得該值。所以像,public int getByte(int num, int byteVal) { return ((num >> 8) >> byteVal) & 0xFF;}但是我知道我的邏輯是有缺陷的。我試圖在一個語句中多次移動。警告:沒有乘法。建議?
1 回答

www說
TA貢獻1775條經(jīng)驗 獲得超8個贊
您希望根據(jù) byteVal 的值向右移動 0、8、16 或 24。在您的示例中,即使 byteVal 為 0,您也已經(jīng)向右移動了 8,所以這不是方法。
那么,你如何將 0/1/2/3 變成 0/8/16/24 ......如果只有一個移位操作可以做到這一點!
return (num >> (byteVal << 3)) & 0xFF;
添加回答
舉報
0/150
提交
取消