简介
支持byte array 到 int array的转换
支持int array 到 byte array的转换
支持大小端设置
实现函数及测试
public class barray_iarray {
public static int[] convert_b2i(byte[] buf, boolean bigendian) {
int intArr[] = new int[buf.length / 4];
int offset = 0;
for(int i = 0; i < intArr.length; i++) {
if(bigendian == true) {
intArr[i] = (buf[3 + offset] & 0xFF) | ((buf[2 + offset] & 0xFF) << 8) |
((buf[1 + offset] & 0xFF) << 16) | ((buf[0 + offset] & 0xFF) << 24);
}
else {
intArr[i] = (buf[0 + offset] & 0xFF) | ((buf[1 + offset] & 0xFF) << 8) |
((buf[2 + offset] & 0xFF) << 16) | ((buf[3 + offset] & 0xFF) << 24);
}
offset += 4;
}
return intArr;
}
public static byte[] convert_i2b(int[] buf, boolean bigendian) {
byte byteArr[] = new byte[buf.length * 4];
int offset = 0;
for(int i = 0; i < buf.length; i++) {
if(bigendian == true) {
byteArr[0+offset] = (byte)((buf[i] >> 24) & 0xff);
byteArr[1+offset] = (byte)((buf[i] >> 16) & 0xff);
byteArr[2+offset] = (byte)((buf[i] >> 8) & 0xff);
byteArr[3+offset] = (byte)((buf[i] >> 0) & 0xff);
}
else {
byteArr[3+offset] = (byte)((buf[i] >> 24) & 0xff);
byteArr[2+offset] = (byte)((buf[i] >> 16) & 0xff);
byteArr[1+offset] = (byte)((buf[i] >> 8) & 0xff);
byteArr[0+offset] = (byte)((buf[i] >> 0) & 0xff);
}
offset += 4;
}
return byteArr;
}
public static void main(String[] args) {
int i;
byte[] barr = new byte[100];
for(i=0; i<barr.length; i++) {
barr[i] = (byte)((i+1) & 0xff);
}
System.out.println("byte array: [");
for(i=0; i<barr.length; i++) {
System.out.printf("%02X,", barr[i]);
}
System.out.println("\n]");
int[] iarr_big = convert_b2i(barr, true);
System.out.println(" int array (big endian): [");
for(i=0; i<iarr_big.length; i++) {
System.out.printf("%08X,", iarr_big[i]);
}
System.out.println("\n]");
int[] iarr_little = convert_b2i(barr, false);
System.out.println(" int array (little endian): [");
for(i=0; i<iarr_little.length; i++) {
System.out.printf("%08X,", iarr_little[i]);
}
System.out.println("\n]");
barr = convert_i2b(iarr_big, true);
System.out.println("byte array (from big endian): [");
for(i=0; i<barr.length; i++) {
System.out.printf("%02X,", barr[i]);
}
System.out.println("\n]");
barr = convert_i2b(iarr_little, false);
System.out.println("byte array (from little endian): [");
for(i=0; i<barr.length; i++) {
System.out.printf("%02X,", barr[i]);
}
System.out.println("\n]");
}
}