如何将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[]
。 Arrays
对double[]
, 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; }