我有一些intshort像这样:

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覆盖最高字节。

09-10 12:48