亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

包含 2 個有符號半字節到 2 個有符號整數的字節

包含 2 個有符號半字節到 2 個有符號整數的字節

慕虎7371278 2022-12-15 15:13:30
出于某種原因,我在 StackOverflow 上找不到這個問題的任何答案。如果已經回答,請指點我重復的帖子。謝謝!我有一個設備,它對信號進行增量編碼并將 2 個 4 位增量打包到一個byte. 我試圖通過將 的高 4 位和低 4 位byte分成兩個單獨的帶符號的ints.例如:byte packedByte = (byte) 0x0FF; // should represent the value -1, -1 in twos complementint upper = packedByte >> 4; // upper byte is easy, prints -1/* * A few goes at getting the lower 4 bits: */int lower = packedByte & 0x0F; // sign is not extended, prints 15lower = (packedByte << 4) >> 4; // doesn't work for positive valueslower = (byte)((byte)(packedByte << 4) >>> 4); // works, but this feels slow有任何想法嗎?
查看完整描述

1 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

假設,正如吉姆加里森指出的那樣,你的半字節實際上只代表 -8 到正 7,你可以繼續做你在上面所做的事情,你可以對下面的部分做以下事情:(packedByte & 0x0F)-2*(packedByte & 0x08)。這里的邏輯是,它保留 0 到 7(從中減去 0),但如果較低數字的符號位中有 1,則減去 2*8 即 16 以得到適當的負數。



查看完整回答
反對 回復 2022-12-15
  • 1 回答
  • 0 關注
  • 90 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號