可以将4个byte按大端序合并为int,需用& 0xFF消除符号扩展:(b0 & 0xFF) << 24 | (b1 & 0xFF) << 16 | (b2 & 0xFF) << 8 | (b3 & 0xFF)。

可以用位运算将4个byte变量按字节顺序合并成一个int(32位),关键在于正确处理符号扩展和移位位置。
注意byte的符号扩展问题
Java中byte是有符号类型(范围-128~127),直接左移或参与位或运算时,若值为负数(最高位为1),会因自动提升为int而发生符号扩展,导致高位补1。需用& 0xFF将其转为无符号等效值(0~255)。
按大端序合并(高位字节在前)
假设b0是最高有效字节(MSB),b3是最低有效字节(LSB),合并公式为:
(b0 & 0xFF)(b1 & 0xFF)(b2 & 0xFF)(b3 & 0xFF)
再用|连接:
int result = ((b0 & 0xFF)
按小端序合并(低位字节在前)
若b0是LSB、b3是MSB,则调整移位量:
立即学习“Java免费学习笔记(深入)”;
(b0 & 0xFF)(b1 & 0xFF)(b2 & 0xFF)(b3 & 0xFF)
组合为:
int result = (b0 & 0xFF) | ((b1 & 0xFF)
验证与反向拆分
合并后可用以下方式还原各字节(以大端序为例):
byte b0 = (byte) ((result >> 24) & 0xFF);byte b1 = (byte) ((result >> 16) & 0xFF);byte b2 = (byte) ((result >> 8) & 0xFF);byte b3 = (byte) (result & 0xFF);
每次右移后都与0xFF做与运算,确保只保留低8位,再强转byte可正确还原原始值(无论原byte正负)。


















