2011-06-21 22 views
16

वेक्टर और डेटाऑटपुटस्ट्रीम है। मुझे वेक्टर से बाइट्स लिखना है (टूएरे रिटर्न बाइट []) को स्ट्रीम में, लेकिन यह केवल बाइट [] को समझता है। बाइट [] से बाइट [] को कैसे परिवर्तित करें?जावा - बाइट [] से बाइट []

+2

@Nick मजाक कर रहा है में योगदान दिया। आप ध्यान दें कि वह स्ट्रिंग ''बाइट []" 'पर' toLowerCase()' को कॉल कर रहा है। हाँ, मुझे पता है, इसे समझाकर, मैंने मजाक बर्बाद कर दिया। – Oded

+0

@ चुटकुले के बारे में स्पष्टीकरण खुद में मजाकिया हैं :) – Atreys

उत्तर

1

एक वेक्टर < बाइट> अक्षमता संरचना के बारे में है क्योंकि आप बाइट्स स्टोर करने के लिए उपयोग कर सकते हैं। मैं कुछ और अधिक कुशल लाइन ByteArrayOutputStream का उपयोग करने पर गंभीर विचार करता हूं जिसमें एक toByteArray() विधि है। यानी वेक्टर को परिवर्तित न करें बल्कि कोड से हटा दें।

+1

इस के साथ मेरा एकमात्र विवाद यह है कि बाइटएरे ऑटपुटस्ट्रीम को कोई भी लिखने के लिए अब आउटपुटस्ट्रीम से प्राप्त होने के अलावा किसी वास्तविक कारण के लिए 'try {} catch() {} 'की आवश्यकता नहीं है। – 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; 
} 

उलटा:

// 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 इस जवाब :)

संबंधित मुद्दे