1. 程式人生 > >無符號1byte轉int

無符號1byte轉int

top 相等 [] 補齊 怎麽 int 範圍 array ron

在java基本類型中byte是有正負之分,它的取值範圍-128到127,有時候在網絡編程裏我們只需要正數,於是會約定1byte是無符號的,它的取值範圍在255-0。那麽我們怎麽將無符號的1byte轉為int呢?

int轉4byte

	public static byte[] intToBytes(int data) {
		// int=4byte
		return new byte[] { (byte) ((data >> 24) & 0xFF), (byte) ((data >> 16) & 0xFF), (byte) ((data >> 8) & 0xFF),
				(byte) (data & 0xFF) };
	}

int轉1byte

丟掉前3byte或者使用下面代碼

public static byte[] intTo1Bytes(int data) {
		return new byte[] { (byte) (data & 0xFF) };
	}

4byte轉int

public static int bytesToInt(byte[] data) {
		return data[3] & 0xFF | (data[2] & 0xFF) << 8 | (data[1] & 0xFF) << 16 | (data[0] & 0xFF) << 24;
	}

1byte轉int(無符號)

public static int bytesToPositiveInt(byte[] data) throws Exception {
		if (data == null || data.length > 3) {
			throw new Exception("data不能為null並且不能超過3位");
		}
		byte[] destBytes = new byte[4];
		System.arraycopy(data, 0, destBytes, data.length, destBytes.length - data.length);
		return bytesToInt(destBytes);
	}

例子

int類型255,轉4byte為[0, 0, 0, -1],去掉前3個byte為[ -1],若直接拿byte的值為-1(與255不等),若補齊3byte再轉為int得到255,與原值相等。

無符號1byte轉int