我有一些int
和short
像这样:
int a = //...
short b = //..
用以下位表示法制作
int c
的最快方法是什么:a
的第二个和第三个最高有效字节由b
的字节表示形式组成。a
的其余字节保持不变。也许按位
OR
将在这里有所帮助,但仍然看不到如何。例如:
a = 01010101 01010101 01010101 01010101
b = 11111111 11111111
那我们有
c = 01010101 11111111 11111111 01010101
最佳答案
删除那些字节中的内容,然后放入b
:
c = (a & 0xFF0000FF) | ((b << 8) & 0x00FFFF00);
移位后的额外
&
用于抵消符号扩展,否则,只要b
为负数,该扩展将用1覆盖最高字节。