Dans cet article, nous allons apprendre à convertir un tableau d'octets en chaîne. Il existe de nombreuses façons d’y parvenir. Une méthode courante parmi ces méthodes consiste à utiliser la classe BitConverter présente dans l'espace de noms Système. Dans cette rubrique, nous allons découvrir Byte to String C#.
La méthode BitConverter.ToString() avec toutes ses formes surchargées facilite la conversion de byte[] en chaîne. Cette méthode convertit essentiellement une valeur numérique qui n’est rien d’autre qu’un élément de byte[] en sa forme hexadécimale équivalente de chaîne. Les formulaires surchargés sont les suivants :
Voici la syntaxe pour convertir byte[] en chaîne à l'aide de la méthode BitConverter.ToString() :
public static string ToString(byte[] byteArray);
La méthode ci-dessus prend un tableau d'octets en entrée et renvoie une chaîne contenant des paires hexadécimales. Chacune de ces paires est séparée par un trait d'union et représente l'élément correspondant dans byteArray.
public static string ToString(byte[] byteArray, int startingIndex);
Ici, la méthode ToString() prend deux arguments ; byteArray est le tableau d'octets à convertir en chaîne, StartingIndex est l'index d'un élément du tableau d'octets à partir duquel vous souhaitez démarrer la conversion.
public static string ToString(byte[] byteArray, int startingIndex, int length);
Ici, la méthode ToString() prend trois arguments ; byteArray est le tableau d'octets à convertir en chaîne, StartingIndex est l'index de l'élément du tableau d'octets à partir duquel vous souhaitez effectuer la conversion, la longueur est le nombre d'éléments du tableau d'octets que vous souhaitez convertir à partir de StartingIndex.
Comme indiqué précédemment, il existe de nombreuses façons de convertir un tableau d'octets en chaîne en C#. L’une des méthodes les plus courantes consiste à utiliser la méthode BitConverter.ToString(). La classe BitConverter sous l'espace de noms System en C# contient plusieurs méthodes pour convertir un tableau d'octets en types de données de base, et nous pouvons donc utiliser la méthode ToString() de cette classe pour convertir byte[] en chaîne. Il existe trois formes surchargées de cette méthode qui sont les suivantes :
ToString(byte[]);
Cette méthode est utilisée pour convertir la valeur numérique de chaque élément de l'ensemble du tableau d'octets en une chaîne où la chaîne résultante contiendra des paires hexadécimales, chacune séparée par un trait d'union, et chaque paire représente l'élément de tableau d'octets correspondant.
ToString(byte[], Int32);
Cette méthode convertit la valeur numérique de chaque élément du sous-tableau d'octets en sa paire de chaînes hexadécimales équivalente. L'argument entier dans cette méthode spécifie l'index de départ du sous-tableau.
ToString(byte[], Int32, Int32);
Cette méthode convertit la valeur numérique de certains ou de tous les éléments du tableau d'octets en sa paire de chaînes hexadécimales. Les éléments à convertir sont spécifiés à l'aide des deuxième et troisième arguments de cette méthode ; le deuxième argument spécifie l'index de départ à partir duquel nous devons commencer la conversion, et le troisième argument spécifie la longueur des éléments à prendre, c'est-à-dire le nombre d'éléments à prendre pour la conversion, à partir de l'index de départ spécifié précédemment.
En dehors de cela, nous pouvons utiliser la classe Encoding présente dans System. Espace de noms de texte pour convertir un tableau d'octets en chaîne avec un jeu de caractères et un encodage UTF-8 ou ASCII. La méthode GetString() fournie par cette classe est utilisée pour décoder les octets présents dans le tableau d'octets en une chaîne.
Les autres schémas de codage fournis par la classe Encoding incluent Unicode, UTF32, UTF7, etc.
Une autre façon de réaliser cette conversion consiste à utiliser la méthode Convert.ToBase64String() pour convertir les octets présents à l'intérieur du tableau d'octets en chaîne.
ToBase64String(byte[]); We can also use MemoryStream to convert byte array to string. But, first, we need to convert the byte array to the stream of bytes using MemoryStream class; then, we can read this entire stream using StreamReader class and then can return this stream as a string with the help of the ReadToEnd() method. Let us now understand this with the help of statements provided below:
using (MemoryStream memoryStream = new MemoryStream(bytes)) { using (StreamReader streamReader = new StreamReader(memoryStream)) { return streamReader.ReadToEnd(); } }
Les « octets » dans les instructions ci-dessus sont un tableau d'octets à convertir en chaîne. Donc, d’abord, nous avons obtenu le tableau d’octets en tant que flux d’octets dans l’objet « memoryStream ». Ensuite, nous lisons ce flux à l'aide de la classe StreamReader et renvoyons le flux sous forme de chaîne à l'aide de la méthode ReadToEnd(), qui lit le flux et renvoie la valeur de la chaîne.
Différents exemples sont mentionnés ci-dessous :
Exemple de conversion d'un tableau d'octets en chaîne à l'aide de la classe BitConverter.
Code :
using System; using System.Globalization; using System.Text; using System.IO; public class Program { public static void Main() { string resultedStr = string.Empty; //defining byte array byte[] bytes = new byte[5] { 12, 24, 36, 48, 60 }; //printing byte array before conversion Console.Write("Byte array before conversion: "); for (int i = 0; i < bytes.Length; i++) { Console.Write(" " + bytes[i]); } //converting byte array to string resultedStr = BitConverter.ToString(bytes); //printing string after conversion Console.WriteLine("\nResulted string after conversion: {0}", resultedStr); Console.ReadLine(); } }
Sortie :
Exemple de conversion d'un tableau d'octets en chaîne à l'aide de la classe Encoding et de la classe MemoryStream.
Code :
using System; using System.Globalization; using System.Text; using System.IO; namespace ConsoleApp4 { public class Program { public static void Main() { string str = "The sun rises in the east"; //converting string to array of bytes byte[] bytes = Encoding.ASCII.GetBytes(str); //printing byte array before conversion Console.Write("Byte array before conversion: "); for (int i = 0; i < bytes.Length; i++) { Console.Write(" " + bytes[i]); } //converting byte array to string using Encoding class str = Encoding.ASCII.GetString(bytes); //printing resulted string after conversion Console.WriteLine("\n"); Console.Write("\nConversion using Encoding class: \n{0}", str); //converting byte array to string using MemoryStream class Console.WriteLine("\n"); Console.WriteLine("\nConversion using MemoryStream: "); using (MemoryStream memoryStream = new MemoryStream(bytes)) { using (StreamReader streamReader = new StreamReader(memoryStream)) { Console.Write(streamReader.ReadToEnd()); } } Console.ReadLine(); } } }
Sortie :
En C#, nous pouvons convertir un tableau d'octets en chaîne en utilisant des classes comme BitConverter, Encoding, MemoryStream, etc. La chaîne résultante fournie par la classe BitConverter comprend des paires hexadécimales. En utilisant la classe Encoding, nous pouvons convertir une chaîne en octet[] et un octet[] en chaîne en utilisant le même schéma de codage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!