2011-07-02 3 views
36

J'ai reçu le contenu d'un fichier texte retourné dans les valeurs binaires:Byte [] pour ASCII

Byte[] buf = new Byte[size]; 
stream = File.InputStream; 
stream.Read(buf, 0, size); 

Comment puis-je convertir en ASCII?

Répondre

71
+1

Cela a fonctionné! Il fonctionne également sur *** tout sous-ensemble *** du tampon d'entrée - en utilisant la variation avec deux paramètres supplémentaires: ['ASCIIEncoding.GetString (byte [] octets, int byteIndex, int byteCount)'] (https: // msdn .microsoft.com/fr-fr/library/38b953c8% ​​28v = vs.110% 29.aspx? cs-save-lang = 1 & cs-lang = csharp # code-snippet-1) (ou sans le troisième paramètre pour le fin du tampon). (Vous pouvez inclure cette information dans votre réponse, pour une réponse plus complète, mais pas explicitement demandé.) –

+0

@PeterMortensen: Merci, vous êtes invités à modifier :) –

3
Encoding.ASCII.GetString(buf); 
3

Comme alternative à la lecture d'une des données d'un flux vers un tableau d'octets, vous pouvez laisser le cadre gérer tout et il suffit d'utiliser un StreamReader mis en place avec un ASCII encodage à lire dans la chaîne. De cette façon, vous n'avez pas à vous préoccuper de la taille de la mémoire tampon ou de la taille des données.

using (var reader = new StreamReader(stream, Encoding.ASCII)) 
{ 
    string theString = reader.ReadToEnd(); 
    // do something with theString 
} 
8

Vous pouvez utiliser:

System.Text.Encoding.ASCII.GetString(buf); 

Mais parfois, vous obtiendrez un numéro bizarre au lieu de la chaîne que vous voulez. Dans ce cas, votre chaîne d'origine peut avoir un caractère hexadécimal lorsque vous le voyez. Si c'est le cas, vous pouvez essayer ceci:

System.Text.Encoding.UTF8.GetString(buf); 

Ou en dernier recours:

System.Text.Encoding.Default.GetString(bytearray); 
1

Encoding.GetString Method (Byte[]) convertir octets à une chaîne.

En cas de substitution dans une classe dérivée, décode tous les octets du tableau d'octets spécifié en une chaîne.

espace de noms: System.Text
Assemblée: mscorlib (dans mscorlib.dll)

Syntaxe

public virtual string GetString(byte[] bytes) 

Paramètres

bytes 
    Type: System.Byte[] 
    The byte array containing the sequence of bytes to decode. 

Valeur de retour

Type de: System.String
Une chaîne contenant les résultats de décodage de la séquence d'octets.

exceptions

ArgumentException  - The byte array contains invalid Unicode code points. 
ArgumentNullException - bytes is null. 
DecoderFallbackException - A fallback occurred (see Character Encoding in the .NET Framework for complete explanation) or DecoderFallback is set to DecoderExceptionFallback. 

Remarques

Si les données à convertir est disponible que dans des blocs séquentiels (tels que les données lues à partir d'un courant) ou si le quantité de données est si grande que il doit être divisé en plus petit bl ocks, l'application doit utiliser le décodeur ou le codeur fourni par la méthode GetDecoder ou la méthode GetEncoder , respectivement, d'une classe dérivée .

Voir les commentaires relatifs au Encoding.GetChars pour une discussion plus des techniques de décodage et considérations.

Questions connexes