Trong bài này, chúng ta sẽ tìm hiểu một số phương pháp chuyển đổi các kiểu dữ liều nguyên thủy, từ int -> byte, byte->int, từ int[] -> byte[], byte[]->int[].

1.Chuyển đổi từ mảng byte[] sang kiểu int

Cách 1

/**

* Convert the byte array to an int.

* @param b The byte array

* @return The integer

*/

public static int byteArrayToInt(byte[] b) {

return byteArrayToInt(b, 0);

}

/**

* Convert the byte array to an int starting from the given offset.

* @param b The byte array

* @param offset The array offset

* @return The integer

*/

public static int byteArrayToInt(byte[] b, int offset) {

int value = 0;

for (int i = 0; i < 4; i++) {

int shift = (4 – 1 – i) * 8;

value += (b[i + offset] & 0x000000FF) << shift;

}

return value;

}

Cách 2

private static int convertByteArrayToInt(byte[] bytes)
{
return (bytes[0] << 32) | (bytes[1] << 24) | (bytes[2] << 16) | (bytes[3] <<8) | bytes[4];
}

2.Chuyển đổi từ kiểu int sang mảng byte[]

Cách 1

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;

}

Cách 2

public static byte[] convertIntToByteArray(int integer)
{
byte[] bytes = new byte[4];
bytes[0] =(byte)( integer >> 24 );
bytes[1] =(byte)( (integer << 8) >> 24 );
bytes[2] =(byte)( (integer << 16) >> 24 );
bytes[3] =(byte)( (integer << 24) >> 24 );
return bytes;
}

3.Chuyển đổi từ mảng int[] sang mảng byte[]

Cách 1:

private byte[] intToBytes(int[] values) {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

DataOutputStream dos = new DataOutputStream(baos);

for (int i = 0; i < values.length; ++i) {

try {

dos.writeInt(values[i]);

} catch (IOException ex) {

ex.printStackTrace();

}

}

return baos.toByteArray();

}

Cách 2:

private static byte[] convertIntArrayToByteArray(int[] integers)
{
byte[] bytes = new byte[integers.length*4];
for (int index = 0; index < integers.length; index++)
{
byte[] integerBytes = convertIntToByteArray(integers[index]);
bytes[index*4] =       integerBytes[0];
bytes[1 + (index*4)] = integerBytes[1];
bytes[2 + (index*4)] = integerBytes[2];
bytes[3 + (index*4)] = integerBytes[3];
}
return bytes;
}

4.Chuyển đổi từ mảng byte[] sang mảng int[]

private static int[] convertByteArrayToIntArray(byte[] bytes)
{
ArrayList integers = new ArrayList();
for (int index = 0; index < bytes.length; index += 4)
{
byte[] fourBytes = new byte[4];
fourBytes[0] = bytes[index];
fourBytes[1] = bytes[index+1];
fourBytes[2] = bytes[index+2];
fourBytes[3] = bytes[index+3];
int integer = convertByteArrayToInt(fourBytes);
integers.add(new Integer(integer));
}
int[] ints = new int[bytes.length/4];
for (int index = 0; index < integers.size() ; index++)
{
ints[index] = ((Integer)integers.get(index)).intValue();
}
return ints;
}

Bạn thấy bài viết này thế nào?