2011-06-21 3 views
16

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

+2

@Nick шутил. Вы можете заметить, что он вызывает 'toLowerCase()' в строке '' Byte [] "'. Да, я знаю, объяснив это, я испортил шутку. – Oded

+0

@ Отдельные объяснения шуток смешны сами по себе :) – Atreys

ответ

1

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

+1

Мое единственное утверждение в том, что любые записи в ByteArrayOutputStream теперь требуют 'try {} catch() {}' по какой-либо иной причине, кроме того, что он наследует от OutputStream. – Huckle

+0

Я бы сказал, что это интересный комментарий к вопросу, а не ответ. –

+0

@TomasVinter Для меня иногда лучший ответ - не делайте этого, сделайте это вместо этого. т. е. вы плохо делаете плохую идею. ;) –

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

freeone3000 вклад в этот ответ :)