我正在开发一个项目,我在其中接收图像数据作为字节数组(每像素1个字节)。每个字节代表一个灰度整数(0-255)。
为了对数据执行许多功能,我需要将字节数组转换为整数数组。 请帮帮我..
答案 0 :(得分:16)
这种简单方法有什么问题吗?
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;
}
编辑:如果你想要-128到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;
}
答案 1 :(得分:1)
它取决于结果int数组的使用,但通常,将字节数组或ByteBuffer转换为整数数组意味着将4个字节“包装”成1个整数,例如对于位图,所以在这种情况下我建议进行以下转换:
IntBuffer ib = ByteBuffer.wrap(input).order(ByteOrder.BIG_ENDIAN).asIntBuffer();
int[] ret = new int[ib.capacity()];
ib.get(ret);
return ret;