سؤال

أنا أحاول تحليل رسالة probematch الصابون مع xmlpullparser. أتلقى هذا عبر البث المتعدد UDP. يمكنني استخدام الرمز التالي لتلقيه.

byte[] buf = new byte[1900];
DatagramPacket packet = new DatagramPacket(buf, buf.length);

mSocket.receive(packet);

// Damn ugly....
String data = new String(packet.getData())

إذا قمت بتحويل البايت [] إلى سلسلة المحلل ، فهل لا يأكله ... هل هناك أي طرق أنيقة للقيام بذلك؟

عندما أقوم بطباعة XML (كسلسلة) ، أحصل على البايتات غير المستخدمة في نهاية السلسلة:

</s12:Envelope>À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?
هل كانت مفيدة؟

المحلول

أولاً ، أعتقد أنك تريد إنشاء السلسلة على النحو التالي:

String data = new String(packet.getData(), 
                         packet.getOffset(), 
                         packet.getLength());

بالنسبة لوجود طريقة أفضل. AIUI ليس حقًا ، على الرغم من أنه قد يكون هناك واجهة برمجة تطبيقات طرف ثالث تجعل ملء/إفراغ بيانات البيانات أسهل قليلاً ، حيث أن كل عبوة البايت هي بشكل كبير.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top