如何将byte 转换为Byte ,反之亦然?

在不使用任何第三方库的情况下,如何将byte []转换为Byte [],还有Byte []转换为byte []? 有没有办法快速使用标准库?

Byte类是原始byte包装 。 这应该做的工作:

 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(); 

您可以在Apache Commons lang库ArrayUtils类中使用toPrimitive方法,如此处所示 – Java – Byte [] to byte []

Java 8解决scheme:

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

不幸的是,你不能这样做从Byte[]转换为byte[]Arraysdouble[]int[]long[]setAll ,但是对于其他的原始types不适用。

字节[]到字节[]:

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

字节[]到字节[]:

 Byte[] byteObject = new Byte[0]; byte[] bytes = ArrayUtils.toPrimitive(byteObject); 

从字节[]到字节[]:

  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]); } 

从字节[]到字节[](使用我们以前定义的B ):

  byte[] b2 = new byte[B.length]; for (int i = 0; i < B.length; i++) { b2[i] = B[i]; } 
 byte[] toPrimitives(Byte[] oBytes) { byte[] bytes = new byte[oBytes.length]; for(int i = 0; i < oBytes.length; i++){ bytes[i] = oBytes[i]; } return bytes; } 

逆:

 //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; }