2015-04-21 14 views
5

Ho una matrice di byte composta da 1024 elementi. Voglio suddividerlo in membri privati ​​di stringhe diverse (ad esempio, i primi 9 byte per nome, i successivi 12 byte per ID utente, ecc.).Come prenderei i primi elementi "n" di un array di byte e convertirli direttamente in una stringa?

Senza dover trasformare l'intero array di byte in una stringa e quindi utilizzando un metodo di sottostringa, c'è un modo per trasformare un intervallo di byte nell'array direttamente in un membro privato per la mia classe?

E.g.

myObject.name = byteArr[0-9]; 
myObject.userId = byteArr[10-21]; 
+3

leggere i documenti può essere abbastanza utile a volte -.-. http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#String%28byte[],%20int,%20int%29 – Paul

risposta

8

Usa:

String myField = new String(myArray, start, end); 

dove start sarebbe 0 se si vuole cominciare dall'inizio

6

Uso String costruttore:

public String(byte bytes[], int offset, int length, Charset charset) 

Esempio:

myObject.name = new String(byteArr, 0, 10, Charset.defaultCharset()) 

Ricordare che byte e caratteri sono diversi tipi in Java e si deve specificare la conversione corretta utilizzando la classe Charset per evitare risultati imprevisti.