如何将字节数组转换为整数数组

8

我正在处理一个项目,其中我收到的图像数据是一个字节数组(每个像素1个字节)。每个字节表示一个灰度整数(0-255)。

为了对数据执行一些功能,我需要将字节数组转换为整数数组。 请帮助我..

2个回答

19

这个简单方法有什么问题吗?

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
这个头低是因为你回答问题的速度,我本来想回答问题,但在几秒钟之间,你已经回答了,让我感到惊讶。 - developer
-128到127需要额外做什么? - user631854
1
不要考虑位掩码,它会对字节进行符号扩展。是的,我同意Damodar的观点...几乎令人毛骨悚然 - 或许Google终于创造出了能通过图灵测试的人工智能,并试图在SO上进行测试?:p - Voo
谢谢,& 0xff 在这里帮了我大忙。这正是我想要的。 - MoxxiManagarm

1
这取决于结果整数数组的用途,但通常将字节数组或ByteBuffer转换为整数数组意味着将4个字节“包装”成1个整数,例如对于位图,因此在这种情况下,我建议进行以下转换:
IntBuffer ib = ByteBuffer.wrap(input).order(ByteOrder.BIG_ENDIAN).asIntBuffer();
int[] ret = new int[ib.capacity()];
ib.get(ret);
return ret;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接