How to convert byte[] to Byte[] and the other way around?

前端 未结 7 664
小鲜肉
小鲜肉 2020-12-02 10:18

How to convert byte[] to Byte[] and also Byte[] to byte[], in the case of not using any 3rd party library?

Is the

相关标签:
7条回答
  • 2020-12-02 10:41

    Byte class is a wrapper for the primitive byte. This should do the work:

    byte[] bytes = new byte[10];
    Byte[] byteObjects = new Byte[bytes.length];
    
    int i=0;    
    // Associating Byte array values with bytes. (byte[] to Byte[])
    for(byte b: bytes)
       byteObjects[i++] = b;  // Autoboxing.
    
    ....
    
    int j=0;
    // Unboxing Byte values. (Byte[] to byte[])
    for(Byte b: byteObjects)
        bytes[j++] = b.byteValue();
    
    0 讨论(0)
  • 2020-12-02 10:45

    From byte[] to Byte[]:

        byte[] b = new byte[]{1,2};
        Byte[] B = new Byte[b.length];
        for (int i = 0; i < b.length; i++)
        {
            B[i] = Byte.valueOf(b[i]);
        }
    

    From Byte[] to byte[] (using our previously-defined B):

        byte[] b2 = new byte[B.length];
        for (int i = 0; i < B.length; i++)
        {
            b2[i] = B[i];
        }
    
    0 讨论(0)
  • 2020-12-02 10:50
    byte[] toPrimitives(Byte[] oBytes)
    {
    
        byte[] bytes = new byte[oBytes.length];
        for(int i = 0; i < oBytes.length; i++){
            bytes[i] = oBytes[i];
        }
        return bytes;
    
    }
    

    Inverse:

    //byte[] to Byte[]
    Byte[] toObjects(byte[] bytesPrim) {
    
        Byte[] bytes = new Byte[bytesPrim.length];
        int i = 0;
        for (byte b : bytesPrim) bytes[i++] = b; //Autoboxing
        return bytes;
    
    }
    
    0 讨论(0)
  • 2020-12-02 10:52

    You could use the toPrimitive method in the Apache Commons lang library ArrayUtils class, As suggested here - Java - Byte[] to byte[]

    0 讨论(0)
  • 2020-12-02 10:57

    byte[] to Byte[] :

    byte[] bytes = ...;
    Byte[] byteObject = ArrayUtils.toObject(bytes);
    

    Byte[] to byte[] :

    Byte[] byteObject = new Byte[0];
    byte[] bytes = ArrayUtils.toPrimitive(byteObject);
    
    0 讨论(0)
  • 2020-12-02 10:58

    Java 8 solution:

    Byte[] toObjects(byte[] bytesPrim) {
        Byte[] bytes = new Byte[bytesPrim.length];
        Arrays.setAll(bytes, n -> bytesPrim[n]);
        return bytes;
    }
    

    Unfortunately, you can't do this to convert from Byte[] to byte[]. Arrays has setAll for double[], int[], and long[], but not for other primitive types.

    0 讨论(0)
提交回复
热议问题