public class IntByteArrayUtil {
public static byte[] shortToByteArray(short s) {
byte[] shortBuf = new byte[2];
for(int i=0; i<2; i++) {
int offset = (shortBuf.length - 1 -i)*8;
shortBuf[i] = (byte)( (s>>>offset) & 0xFF );
}
return shortBuf;
}
//byte数组转换成short
//b[1] & 0xFF 得到b[i]的无符号值
public static final short byteArrayToShort(byte [] b) {
return (short)((b[0] << 8) + (b[1] & 0xFF));
}
//int转换成byte数组
public static byte[] intToByteArray(int value){
byte[] b = new byte[4];
for (int i = 0; i < 4; i++) {
int offset = (b.length - 1 - i) * 8;
b[i] = (byte)( (value>>>offset) & 0xFF );
}
return b;
}
//byte数组转换成int
//b[1] & 0xFF得到b[1]的无符号值
//b[2] & 0xFF得到b[2]的无符号值
//b[3] & 0xFF得到b[3]的无符号值
public static final int byteArrayToInt(byte [] b) {
return (b[0] << 24) + ((b[1] & 0xFF) << 16) + ((b[2] & 0xFF) << 8) + (b[3] & 0xFF);
}
public static void main(String[] args){
int i = -1;
System.out.println( Integer.toBinaryString(i) );//采用补吗表示int
byte[] sb = intToByteArray(i);
printByte( sb[0] );
printByte( sb[1] );
printByte( sb[2] );
printByte( sb[3] );
System.out.println(byteArrayToInt(sb));
}
private static void printByte(byte b){
for( int i=7; i>=0; i--) {
System.out.print( b>>>i & 0X01 );
}
System.out.println();
}
}
public static byte[] shortToByteArray(short s) {
byte[] shortBuf = new byte[2];
for(int i=0; i<2; i++) {
int offset = (shortBuf.length - 1 -i)*8;
shortBuf[i] = (byte)( (s>>>offset) & 0xFF );
}
return shortBuf;
}
//byte数组转换成short
//b[1] & 0xFF 得到b[i]的无符号值
public static final short byteArrayToShort(byte [] b) {
return (short)((b[0] << 8) + (b[1] & 0xFF));
}
//int转换成byte数组
public static byte[] intToByteArray(int value){
byte[] b = new byte[4];
for (int i = 0; i < 4; i++) {
int offset = (b.length - 1 - i) * 8;
b[i] = (byte)( (value>>>offset) & 0xFF );
}
return b;
}
//byte数组转换成int
//b[1] & 0xFF得到b[1]的无符号值
//b[2] & 0xFF得到b[2]的无符号值
//b[3] & 0xFF得到b[3]的无符号值
public static final int byteArrayToInt(byte [] b) {
return (b[0] << 24) + ((b[1] & 0xFF) << 16) + ((b[2] & 0xFF) << 8) + (b[3] & 0xFF);
}
public static void main(String[] args){
int i = -1;
System.out.println( Integer.toBinaryString(i) );//采用补吗表示int
byte[] sb = intToByteArray(i);
printByte( sb[0] );
printByte( sb[1] );
printByte( sb[2] );
printByte( sb[3] );
System.out.println(byteArrayToInt(sb));
}
private static void printByte(byte b){
for( int i=7; i>=0; i--) {
System.out.print( b>>>i & 0X01 );
}
System.out.println();
}
}