2011-06-21 44 views
16

Có Vector và DataOutputStream. Tôi cần phải viết byte từ Vector (toArray trả về Byte []) cho dòng, nhưng nó chỉ hiểu byte []. Làm thế nào để chuyển đổi Byte [] thành byte []?Java - Byte [] tới byte []

+2

@Nick đang nói đùa. Bạn có thể lưu ý rằng anh ta đang gọi 'toLowerCase()' trên chuỗi '" Byte [] "'. Vâng, tôi biết, bằng cách giải thích nó, tôi đã hủy hoại trò đùa. – Oded

+0

@ Giải thích được giải thích về những câu chuyện cười thật hài hước :) – Atreys

Trả lời

1

Một Vector < Byte> là cấu trúc không hiệu quả như bạn có thể sử dụng để lưu trữ byte. Tôi sẽ nghiêm túc xem xét sử dụng một cái gì đó hiệu quả hơn dòng ByteArrayOutputStream trong đó có một toByteArray() phương pháp. tức là không chỉ chuyển đổi Vector nhưng xóa nó khỏi mã.

+1

Sự tranh cãi duy nhất của tôi với điều này là bất kỳ ghi vào ByteArrayOutputStream bây giờ đều yêu cầu 'try {} catch() {}' không có lý do thực sự nào khác ngoài nó thừa kế từ OutputStream. – Huckle

+0

Tôi muốn nói đây là một nhận xét thú vị cho câu hỏi chứ không phải là câu trả lời. –

+0

@TomasVinter Đối với tôi, đôi khi câu trả lời hay nhất là không làm điều đó, hãy làm điều này thay thế. tức là bạn đang làm một ý tưởng tồi tệ hơn. ;) –

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 góp trong câu trả lời này :)