您的位置:首页 > 其它

byte[]和int相互转换备份

2016-07-30 00:00 260 查看
import java.nio.ByteOrder;

/**
*/
public class AnyIdUtil {
public final static boolean IS_BIG_ENEIAN = (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN);

public static byte[] int2bytes(int value) {
byte[] bytes = new byte[4];
if (!IS_BIG_ENEIAN) { // 小端
bytes[3] = (byte) ((value >> 24) & 0xFF);
bytes[2] = (byte) ((value >> 16) & 0xFF);
bytes[1] = (byte) ((value >> 8) & 0xFF);
bytes[0] = (byte) (value & 0xFF);//byte[0] 存储 数据高位
} else {//大端
bytes[0] = (byte) ((value >> 24) & 0xFF); //byte[0] 存储数据高位
bytes[1] = (byte) ((value >> 16) & 0xFF);
bytes[2] = (byte) ((value >> 8) & 0xFF);
bytes[3] = (byte) (value & 0xFF);
}
return bytes;
}

public static int bytes2int(byte[] bytes) {
int value = 0;
if (!IS_BIG_ENEIAN) {
value = (int) ((bytes[0] & 0xFF)
| ((bytes[1] & 0xFF) << 8)
| ((bytes[2] & 0xFF) << 16)
| ((bytes[3] & 0xFF) << 24));
} else {
value = (int) (((bytes[0] & 0xFF) << 24)
| ((bytes[1] & 0xFF) << 16)
| ((bytes[2] & 0xFF) << 8)
| (bytes[3] & 0xFF));
}
return value;
}

}

这个更好理解:

public static int byte4ToInt(byte[] bytes, int off) {

int b0 = bytes[off] & 0xFF;

int b1 = bytes[off + 1] & 0xFF;

int b2 = bytes[off + 2] & 0xFF;

int b3 = bytes[off + 3] & 0xFF;

return (b0 << 24) | (b1 << 16) | (b2 << 8) | b3;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: