Problème de Trim() sur un Byte converti en String [Résolu]

fleothekiller 2 Messages postés samedi 7 juin 2008Date d'inscription 22 mars 2010 Dernière intervention - 26 févr. 2009 à 00:12 - Dernière réponse : fleothekiller 2 Messages postés samedi 7 juin 2008Date d'inscription 22 mars 2010 Dernière intervention
- 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
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
leprov 1163 Messages postés vendredi 23 juillet 2004Date d'inscription 21 octobre 2010 Dernière intervention - 27 févr. 2009 à 15:46
3
Merci
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)

Merci leprov 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de leprov
fleothekiller 2 Messages postés samedi 7 juin 2008Date d'inscription 22 mars 2010 Dernière intervention - 28 févr. 2009 à 12:23
0
Merci
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 ?
Commenter la réponse de fleothekiller

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.