java中int类型和byte[]数组之间的转换

int和byte[]之间的转换用的比较多的情况是在网络编程中,socket在传输过程中多以byte[]的形式出现

int转byte[]

java里int是32位即4个byte,所以要把int转成byte数组要用长度4的byte[]接收,
b[0]   =   (byte)   (n   &   0xff);  表示接收int末8位数据
b[1]   =   (byte)   (n   >>   8   &   0xff);   先将9-16位的数据右移到末8位,

再与11111111做与运算过滤掉高位,仍然保留末8位数据,这是为了获取int n的9-16位的byte值。
后面的原理同上,都是为了将要取值的位数先移动到末8位,再取值

/**
	 * int转byte数组
	 * 
	 * @param n
	 * @return
	 */
	private static byte[] intToByteLH(int n) {
		byte[] b = new byte[4];
		b[0] = (byte) (n & 0xff);
		b[1] = (byte) (n >> 8 & 0xff);
		b[2] = (byte) (n >> 16 & 0xff);
		b[3] = (byte) (n >> 24 & 0xff);
		return b;
	}

byte[]转int

public static int byte2int(byte[] res) {
		// 一个byte数据左移24位变成0x??000000,再右移8位变成0x00??0000

		int targets = (res[0] & 0xff) | ((res[1] << 8) & 0xff00) // | 表示安位或
				| ((res[2] << 24) >>> 8) | (res[3] << 24);
		return targets;
	}


你可能感兴趣的:(int与byte之间的转换)