Problème de Trim() sur un Byte converti en String

Résolu
fleothekiller Messages postés 2 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 22 mars 2010 - 26 févr. 2009 à 00:12
fleothekiller Messages postés 2 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 22 mars 2010 - 28 févr. 2009 à 12:23
Bonjour !

Voilà quelques heures que je gratte sur un petit problème, mais je ne trouve malheureusement pas la solution.

Je m'explique :

Je récupère les premiers bytes d'un fichier dans la variable bBuffer
      FileStream leFileStream;

      leFileStream = new FileStream(paramMP3.fileComplete , FileMode.Open);

      byte[] bBuffer = new byte[128];

      leFileStream.Seek(-128, SeekOrigin.End);

      leFileStream.Read(bBuffer,0, 128);

      leFileStream.Close();

Je convertis en string :

 -> string id3 = Encoding.ASCII.GetString(bBuffer);

Pour le moment tout se passe bien, si j'affiche une partie de id3 à l'aide de la commande suivante, seul le texte s'affiche, même si il est inférieur à 30 caractères.

-> string auteur = id3Tag.Substring(3,30).Trim()

Pourtant si je fais un auteur.Length sur  la taille est toujours de 30 alors que je souhaite avoir la taille effective du texte, j'en conclus qu'il doit y avoir un problème lors de la conversion des bytes NULL que le trim() ne parviens pas à éliminer.

Avez vous une solution ? Merci d'avance

2 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
27 févr. 2009 à 15:46
Première chose, n'utilise pas l'encoding ASCII qui est l'encoding ascii US (donc par de caractères étendus, donc tes caractères accentués vont poser soucis). Enfin, le trim ne supprime pas les caractères \0 en trop, tu dois l'effectuer à la main. Le trim ne fonctionne (de mémoire) que sur les espaces (à vérifier dans la doc de la méthode)
3
fleothekiller Messages postés 2 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 22 mars 2010
28 févr. 2009 à 12:23
Merci ça m'a beaucoup aidé :)
Du coup j'ai forcé le trim() à supprimer les \0 avec .Trim('\0'), et ça fonctionne niquel
Sinon pour remplacer l'encoding en ascii US tu me conseille quoi ?
0