java byte处理
2017-09-10 本文已影响157人
WangGavin
/**
* 四字节转int,适用于低位在前,高位在后
* @param bytes
* @param index
* @return
*/
public static int getInt_1(byte[] bytes,int index){
int value=(int)((bytes[index]&0xff)
|(bytes[index+1]<<8&0xff00)
|(bytes[index+2]<<16&0xff0000)
|(bytes[index+3]<<24&0xff000000));
return value;
}
/**
* int 转为长度为4的字节数组,适用于高位在后,低位在前
* @param value
* @return
*/
public static byte[] getBytesFromInt_1(int value){
byte[] temp=new byte[4];
temp[3]=(byte) ((value&0xff000000)>>24);
temp[2]=(byte) ((value&0xff0000)>>16);
temp[1]=(byte) ((value&0xff00)>>8);
temp[0]=(byte) ((value&0xff));
return temp;
}
/**
* 四字节转int,适用于低位在后,高位在前
* @param bytes
* @param index
* @return
*/
public static int getInt_2(byte[] bytes,int index){
int value=(int)((bytes[index]<<24&0xff000000)
|(bytes[index+1]<<16&0xff0000)
|(bytes[index+2]<<8&0xff00)
|(bytes[index+3]&0xff)
);
return value;
}
/**
* int 转为长度为4的字节数组,适用于高位在前,低位在后
* @param value
* @return
*/
public static byte[] getBytesFromInt_2(int value){
byte[] temp=new byte[4];
temp[0]=(byte) ((value&0xff000000)>>24);
temp[1]=(byte) ((value&0xff0000)>>16);
temp[2]=(byte) ((value&0xff00)>>8);
temp[3]=(byte) ((value&0xff));
return temp;
}
/**
* 2字节数组转换为short,适用于低位在前,高位在后
* @param bytes
* @param index
* @return
*/
public static short getShort_1(byte[] bytes,int index){
return (short)(
(bytes[index]&0xff)
|(bytes[index+1]<<8&0xff00)
);
}
/**
* short转长度为2的字节数组,低位在前,高位在后
* @param value
* @return
*/
public static byte[] getBytesFromShort_1(short value){
byte[] temp=new byte[2];
temp[0]=(byte) (value&0xff);
temp[1]=(byte)(value>>8&0xff00);
return temp;
}
/**
* 2字节数组转换为short,适用于低位在后,高位在前
* @param bytes
* @param index
* @return
*/
public static short getShort_2(byte[] bytes,int index){
return (short)(
(bytes[index+1]&0xff)
|(bytes[index]<<8&0xff00)
);
}
/**
* short转长度为2的字节数组,低位在后,高位在前
* @param value
* @return
*/
public static byte[] getBytesFromShort_2(short value){
byte[] temp=new byte[2];
temp[1]=(byte) (value&0xff);
temp[0]=(byte)(value>>8&0xff00);
return temp;
}