web-dev-qa-db-fra.com

Octet [] à ASCII

J'ai reçu le contenu d'un fichier texte renvoyé sous forme de valeurs binaires:

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

Comment puis-je convertir cela en ASCII?

46
The Mask
88
Jalal Said

Vous pouvez utiliser:

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

Mais parfois, vous obtiendrez un nombre étrange à la place de la chaîne souhaitée. Dans ce cas, votre chaîne d'origine peut comporter un caractère hexadécimal lorsque vous la 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);
9
Patrick Desjardins
Encoding.ASCII.GetString(buf);
5
Mrchief

Au lieu de lire les données d’un flux dans un tableau d’octets, vous pouvez laisser le framework gérer tout et utiliser simplement un StreamReader configuré avec un ASCII encodage pour lire dans la chaîne. Ainsi, vous n’aurez plus à vous soucier d’obtenir la taille de tampon appropriée ou des tailles de données plus grandes.

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

Encoding.GetString, méthode (Byte []) convertir les octets en 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
Assembly : 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 : System.String
Chaîne contenant les résultats du décodage de la séquence d'octets spécifiée.

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 ne sont disponibles que dans des blocs séquentiels (telles que des données lues dans un flux) ou si la quantité de données est si importante qu'elle doit être divisée en blocs plus petits, l'application doit utiliser le décodeur ou l'encodeur fourni. par la méthode GetDecoder ou la méthode GetEncoder, respectivement, d'une classe dérivée.

Voir les remarques sous Encodage.GetChars pour plus de détails sur les techniques et les considérations de décodage.

1
BrunoLM