为了账号安全,请及时绑定邮箱和手机立即绑定

包含 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 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信