無符號1byte轉int
阿新 • • 發佈:2019-01-07
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