java的int和byte数组的相互转换

byte数组转为int
有两种原理,
一种是先左移动24位,在无符号右移  对应的是byte2int3
另外一种是 先移动 在把干扰的和0做与操作,消除干扰(byte负数的时候 右移时左边都是1,这个时候是有干扰的)  对应的是byte2int2
还有就是这两种的结合了  对应byte2int

注意这个转成byte和实际int的byte的顺序是相反的,不要理解错了。
这样写的原因是写起来更好看,功能反正是ok的


public static int byte2int(byte[] res) {
		int targets = (res[0] & 0xff) | ((res[1] << 8) & 0xff00) 
				| ((res[2] << 24) >>> 8) | (res[3] << 24);
		return targets;
	}
	

	public static int byte2int2(byte[] res) {
		int targets = (res[0] & 0xff) | ((res[1] << 8) & 0xff00) 
				| ((res[2] << 16) & 0xff0000) | (res[3] << 24);
		return targets;
	}
	
	public static int byte2int3(byte[] res) {
		int targets = ((res[0] << 24) >>> 24) | ((res[1] << 24) >>> 16) 
				| ((res[2] << 24) >>> 8) | (res[3] << 24);
		return targets;
	}



int转为byte数组就比较简单了:
public static byte[] int2byte(int res) {
		byte[] targets = new byte[4];
		targets[0] = (byte) (res & 0xff);
		targets[1] = (byte) ((res >> 8) & 0xff);
		targets[2] = (byte) ((res >> 16) & 0xff);
		targets[3] = (byte) (res >>> 24);
		return targets;
	}

你可能感兴趣的:(java)