how to convert the byte array into an integer array

前端 未结 2 2013
挽巷
挽巷 2020-12-10 15:35

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

相关标签:
2条回答
  • 2020-12-10 16:14

    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;
    
    0 讨论(0)
  • 2020-12-10 16:16

    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;
    }
    
    0 讨论(0)
提交回复
热议问题