2011-06-21 19 views
16

Istnieje wektor i DataOutputStream. Muszę napisać bajty z Vector (toArray zwraca Byte []) do strumienia, ale rozumie tylko bajt []. Jak przekonwertować bajt [] na bajt []?Java - Byte [] na bajt []

+2

@Nick żartuje. Możesz zauważyć, że on wywołuje 'toLowerCase()' na łańcuchu '" Byte [] "'. Tak, wiem, tłumacząc to, zrujnowałem żart. – Oded

+0

@Wskazane wyjaśnienia dowcipów same w sobie są zabawne :) – Atreys

Odpowiedz

1

Wektor < Bajt> jest mniej więcej tak nieefektywną strukturą, jak można by użyć do przechowywania bajtów. Chciałbym poważnie rozważyć użycie czegoś bardziej wydajnego linii ByteArrayOutputStream, która ma metodę toByteArray(). tzn. nie konwertuj grafiki wektorowej, ale usuń ją z kodu.

+1

Jedyne moje zastrzeżenie to to, że wszelkie zapisy do ByteArrayOutputStream wymagają teraz 'try {} catch() {}' bez żadnego prawdziwego powodu poza tym, że dziedziczy on z OutputStream. – Huckle

+0

Powiedziałbym, że jest to interesujący komentarz do pytania, a nie odpowiedź. –

+0

@ TomasVinter Dla mnie czasami najlepszą odpowiedzią jest nie rób tego, rób to zamiast tego. na przykład pogarszasz zły pomysł. ;) –

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 przyczyniły się w tej odpowiedzi :)