Converter arrays de bytes para strings é uma tarefa comum em C# ao trabalhar com dados binários. Este processo requer a especificação da codificação usada para interpretar os bytes, pois diferentes codificações (como UTF-8, ASCII, Unicode) representam caracteres de forma diferente. Escolher a codificação errada leva a uma saída incorreta ou corrompida. Este artigo explora dois métodos principais: usando Encoding.GetString()
e utilizando MemoryStream
.
Sumário
- Convertendo Arrays de Bytes para Strings com
Encoding.GetString()
- Usando
MemoryStream
para Conversão de Array de Bytes para String - Escolhendo o Melhor Método
Convertendo Arrays de Bytes para Strings com Encoding.GetString()
O método Encoding.GetString()
oferece uma abordagem direta e eficiente. Ele recebe o array de bytes e a codificação como entrada, retornando a string correspondente.
using System;
using System.Text;
public class ByteArrayToString
{
public static void Main(string[] args)
{
// Array de bytes de exemplo (representando "Hello, World!" em UTF-8)
byte[] byteArray = Encoding.UTF8.GetBytes("Hello, World!");
// Converter o array de bytes para uma string usando a codificação UTF-8
string str = Encoding.UTF8.GetString(byteArray);
// Imprimir a string resultante
Console.WriteLine(str); // Saída: Hello, World!
}
}
Este exemplo usa a codificação UTF-8. Lembre-se de substituir Encoding.UTF8
pela codificação apropriada (por exemplo, Encoding.ASCII
, Encoding.Unicode
) se seu array de bytes usar uma codificação diferente.
Usando MemoryStream
para Conversão de Array de Bytes para String
A abordagem MemoryStream
oferece mais flexibilidade, especialmente ao lidar com arrays de bytes grandes ou exigir controle mais preciso sobre o comportamento do fluxo. Envolve criar um MemoryStream
a partir do array de bytes e, em seguida, usar um StreamReader
para ler os dados como uma string.
using System;
using System.IO;
using System.Text;
public class ByteArrayToStringMemoryStream
{
public static void Main(string[] args)
{
// Array de bytes de exemplo (representando "Hello, World!" em UTF-8)
byte[] byteArray = Encoding.UTF8.GetBytes("Hello, World!");
// Criar um MemoryStream a partir do array de bytes
using (MemoryStream stream = new MemoryStream(byteArray))
{
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
// Ler a string do fluxo
string str = reader.ReadToEnd();
// Imprimir a string resultante
Console.WriteLine(str); // Saída: Hello, World!
}
}
}
}
As instruções using
garantem o gerenciamento adequado de recursos. Embora este método ofereça mais controle, geralmente é menos eficiente que Encoding.GetString()
para arrays de bytes menores.
Escolhendo o Melhor Método
Para a maioria dos cenários envolvendo arrays de bytes menores, Encoding.GetString()
é a escolha mais simples e eficiente. No entanto, para arrays maiores, manipulações de fluxo complexas ou quando é necessário um controle mais preciso sobre o fluxo, MemoryStream
fornece uma solução mais robusta. Sempre priorize a seleção da codificação correta para garantir a conversão precisa.