Java - от байта [] до байта [] - PullRequest
16 голосов
/ 21 июня 2011

Есть Vector и DataOutputStream.Мне нужно записать байты из Vector (toArray возвращает Byte []) в поток, но он понимает только byte [].Как преобразовать Байт [] в байт []?

Ответы [ 3 ]

28 голосов
/ 21 июня 2011

Вы можете использовать метод toPrimitive в Apache Commons lang библиотека ArrayUtils класс?

9 голосов
/ 17 июня 2014
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;
}

freeone3000 участвовал в этом ответе:)

2 голосов
/ 22 июня 2011

Вектор примерно такая же неэффективная структура, какую вы могли бы использовать для хранения байтов. Я бы серьезно подумал об использовании более эффективной строки ByteArrayOutputStream, которая имеет метод toByteArray (). т.е. не просто конвертировать вектор, но удалить его из кода.

...