как преобразовать Byte[] в Byte[], и наоборот?
Как преобразовать byte[] в Byte [], а также Byte[] в byte [], в случае не использования какой-либо сторонней библиотеки? Есть ли способ сделать это быстро, просто используя стандартную библиотеку?
6 ответов:
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();
byte[] to Byte []:
byte[] bytes = ...; Byte[] byteObject = ArrayUtils.toObject(bytes);
Byte[] to byte []:
Byte[] byteObject = new Byte[0]; byte[] bytes = ArrayUtils.toPrimitive(byteObject);
вы можете использовать метод toPrimitive в классе ArrayUtils библиотеки Apache Commons lang, Как предлагается здесь - Java-Byte[] to byte[]
Java 8 решение:
Byte[] toObjects(byte[] bytesPrim) { Byte[] bytes = new Byte[bytesPrim.length]; Arrays.setAll(bytes, n -> bytesPrim[n]); return bytes; }
к сожалению, вы не можете сделать это, чтобы преобразовать от
Byte[]
tobyte[]
.Arrays
иsetAll
наdouble[]
,int[]
иlong[]
, но не для остальных примитивных типов.
из Byte[] в 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]); }
из Byte[] в Byte[] (ранее определяемые используя наш
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; }