2017-05-22 3 views
-1

Ich sende/empfange Daten zwischen Android und anderen Gerät über den USB.Puffer zu String

Der Code, den ich für Daten empfangen verwenden:

StringBuilder stringBuilder = new StringBuilder(); 

int i = 0; 
int s = buffer[0]; 
for (; i < s; i++) { 

    stringBuilder.append(String.valueOf((char)buffer[i]));      
} 

byte[] b = String.valueOf(stringBuilder).getBytes(); 

ich alle Bytes erhalten gut, außer wenn das Byte größer ist als 127. Wie zu?

Ich versuche zu verwenden:

stringBuilder2.append(String.valueOf((int)buffer[i] & 0xFF)); 

und gut funktionieren, wenn ich String.valueOf (String) lesen, aber nicht, wenn ich schaffen byte []

+0

'Daten sind eine Serie von Bytes: byte [1,2,8,56,87,256] '- Das ist keine Folge von Bytes. Es hat 256 drin. – khelwood

+0

Srry, ich habe nie mit Bytes gespielt ..;) – Phyron

+0

Einige Zeichen werden mit mehreren Bytes dargestellt, so dass Sie darauf achten müssen, nicht 1 Byte gleichzeitig zu konvertieren. –

Antwort

0

Wenn alle Bytes die Sie erhalten sind im Format ASCII, in Ihrem stringBuilder haben Sie bereits den Text der Zeichenfolge, die Sie benötigen.

Auf der anderen Seite, dass buffer[0] Annahme, daß die Größe des Puffers Sie so etwas wie dies versuchen könnten:

byte[] tmp = new byte[buffer[0]]; 
System.arraycopy(buffer, 1, tmp, 0, buffer[0]); 
String result = new String(tmp);  
+0

Ja, danke, aber ich brauche ein Array von jedem Wert. Die Zeichenfolge für Beispiel ist: 12358478512, und ich brauche ein Array wie: [12,358,4,78,5,12] – Phyron

+0

@Phyron Ist es wahr, dass jedes Mal, wenn Sie einen "Puffer" innerhalb erhalten, gibt es eine Liste von Bytes, die darstellt nur eine Nummer? – freedev

+0

In meinem Code (erster Beitrag) enthält "byte [] b" eine Liste von Zahlen. Jede Position ist eine Zahl. Das Problem ist mit den größten Zahlen als 127 – Phyron

Verwandte Themen