में ArrayList
ArrayList<String>
है जो मैं यूडीपी के माध्यम से भेजना चाहता हूं लेकिन प्रेषण विधि को
byte[]
की आवश्यकता है।
क्या कोई मुझे बता सकता है कि मेरे ArrayList<String>
से byte[]
को कैसे परिवर्तित करें?
धन्यवाद!
में ArrayList
ArrayList<String>
है जो मैं यूडीपी के माध्यम से भेजना चाहता हूं लेकिन प्रेषण विधि को
byte[]
की आवश्यकता है।
क्या कोई मुझे बता सकता है कि मेरे ArrayList<String>
से byte[]
को कैसे परिवर्तित करें?
धन्यवाद!
यदि दूसरी तरफ जावा भी है, तो आप ObjectOutputStream
का उपयोग कर सकते हैं। यह ऑब्जेक्ट को क्रमबद्ध करेगा (आप ByteArrayOutputStream
का उपयोग बाइट्स लिखे जाने के लिए कर सकते हैं)
यह वास्तव में इस बात पर निर्भर करता है कि आप दूसरी बाइट पर इन बाइट्स को कैसे डीकोड करने की अपेक्षा करते हैं। सूची में प्रत्येक स्ट्रिंग के लिए DataOutputStream
जैसे यूटीएफ -8 एन्कोडिंग का उपयोग करने का एक उचित तरीका होगा। एक स्ट्रिंग के लिए यह यूटीएफ -8 एन्कोडिंग की लंबाई के लिए 2 बाइट्स लिखता है जिसके बाद यूटीएफ -8 बाइट्स होता है। यदि आप दूसरे छोर पर जावा का उपयोग नहीं कर रहे हैं तो यह पोर्टेबल होगा। यहाँ एन्कोडिंग का एक उदाहरण और है इस तरह से दोनों पक्षों के लिए जावा का उपयोग करने में एक ArrayList<String>
डिकोडिंग:
// example input list
List<String> list = new ArrayList<String>();
list.add("foo");
list.add("bar");
list.add("baz");
// write to byte array
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(baos);
for (String element : list) {
out.writeUTF(element);
}
byte[] bytes = baos.toByteArray();
// read from byte array
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
DataInputStream in = new DataInputStream(bais);
while (in.available() > 0) {
String element = in.readUTF();
System.out.println(element);
}
आप पसंद कर सकते हैं उपलब्ध लंबाई को पहले भेजें() आमतौर पर उपयोग करने के लिए एक अच्छी विधि नहीं है। –
आप लूप के बाद 'out.flush(); 'जोड़ना चाहेंगे। इससे यह सुनिश्चित होगा कि आपका सभी डेटा स्ट्रीम पर भेजा जाएगा। – cobarzan
http://www.java2s.com/Code/JavaAPI/java.util/ArrayListtoArrayTa.htm –