I am working on a project in which I am receiving image data as an array of bytes (1-byte per pixel). Each byte represents a greyscale integer (0-255).
In order to perform a number of functions on the data, I need to convert the byte array into an integer ar开发者_开发技巧ray. please help me..
Anything wrong with the simple approach?
public static int[] convertToIntArray(byte[] input)
{
int[] ret = new int[input.length];
for (int i = 0; i < input.length; i++)
{
ret[i] = input[i] & 0xff; // Range 0 to 255, not -128 to 127
}
return ret;
}
EDIT: If you want a range of -128 to 127:
public static int[] convertToIntArray(byte[] input)
{
int[] ret = new int[input.length];
for (int i = 0; i < input.length; i++)
{
ret[i] = input[i];
}
return ret;
}
It depends on the use of the resulted int array, but normally, converting a byte array or ByteBuffer into an integer array means "wraping" 4 bytes into 1 integer, e.g. for bitmaps, so in that case I would suggest the following conversion:
IntBuffer ib = ByteBuffer.wrap(input).order(ByteOrder.BIG_ENDIAN).asIntBuffer();
int[] ret = new int[ib.capacity()];
ib.get(ret);
return ret;
精彩评论