2010-07-27 9 views
1

Salut J'essaie d'implémenter l'interface SourceStream dans mon application et remplace la méthode read (byte [], off, len) et je lis les octets d'un serveur. Mais je veux convertir ces flux d'octets en String pour que je utilisé un objet string par new String (byte []) mais il demande l'octet initial dans off et la longueur des octets ie len comme paramètres..Pourquoi il se pose comme ça, puisque nous ne contenons que Strring (bye []) seulement. quelqu'un peut m'aider ... MerciComment convertir un int ByteStream en chaîne?

Répondre

0

Si vous avez juste un byte[] alors vous pouvez créer un nouveau String via le constructeur String(byte[],int,int) fourni par l'API.

Dans votre cas, vous feriez

byte[] myBytes = ("Hello, World!").getBytes(); 
String myString = new String(myBytes, 0, myBytes.length); 
System.out.println(myString); 

EDIT: Essayez quelque chose comme ceci:

int readLength = (len > bufSize ? bufSize : len); 
for (int i = 0; i < readLength; i++) { 
    b[off + i] = buffers[PBuf][PByte]; 
} 
String metaSt = new String(b, 0, readLength); 
+0

Salut Klee Merci pour la suggestion, mais quand je me sers paramètre myBytes.length il se plaint " L'octet de type primitif de myBytes n'a pas de longueur de champ "erreur ... – Koushik

+0

Intéressant ... Je pense que vous utilisez juste un' byte' où j'utilise un 'byte []'. Vous ne pouvez pas utiliser de champs pour les types primitifs (tels que 'byte's). – KLee1

+0

Quand je prends directement signifie que cela vient du flux (int octets) même si on dit que la longueur n'est pas résolue.J'utilise String myString = new String (b [désactivé + i], 0, b [désactivé + i] .length); pouvons-nous convertir int Bytestream en forme de chaîne? – Koushik

0

Il suffit de fournir 0 comme offset initial et yourArray.Length comme longueur et vous avez terminé. C'est pourquoi une méthode qui ne prend qu'un seul tableau d'octets n'est pas fournie, probablement pour éviter 101 variations de la méthode.