C#
- Codificando para base64 : String e Array de bytes
![]() |
Hoje veremos como realizar a codificação e decodificação para base64 com strings e array de bytes na linguagem C#. |
O Base64 é um método para codificar dados para transferência na Interner (codificação MIME para transferência de conteúdo). É muito utilizado para transmitir dados binários por meios de transmissão que lidam apenas com texto, como por exemplo para enviar arquivos anexos por e-mail.
E hoje veremos como tratar strings e array de bytes para o formato base64.
O namespace System.Convert possui dois métodos para tratar com Base64:
O método estático FromBase64String na classe Convert torna a decodificação uma base64-string codificada uma questão simples. Este método retorna um array de bytes que contém os elementos decodificados da String.
A classe Convert torna simples a codificação entre um byte[] e uma String. Os parâmetros para esse método são bastante flexíveis, permitindo iniciar e parar o conversão em qualquer ponto da matriz de bytes de entrada.
Nos exemplos usamos uma aplicação Console do tipo .NET Core criada no VS 2019 Community.
1- Convertendo String para Base64 e vice-versa
Vamos criar uma classe chamada Conversor na raiz do projeto e definir dois métodos nesta classe:
No código a seguir implementamos os métodos acima:
using System; using System.Text; namespace CShp_Base64
{
public class Conversor
{
//convert string para base64
static public string EncodeToBase64(string texto)
{
try
{
byte[] textoAsBytes = Encoding.ASCII.GetBytes(texto);
string resultado = System.Convert.ToBase64String(textoAsBytes);
return resultado;
}
catch (Exception)
{
throw;
}
}
//converte de base64 para texto
static public string DecodeFrom64(string dados)
{
try
{
byte[] dadosAsBytes = System.Convert.FromBase64String(dados);
string resultado = System.Text.ASCIIEncoding.ASCII.GetString(dadosAsBytes);
return resultado;
}
catch (Exception)
{
throw;
}
}
}
}
|
Esta classe define dois métodos estáticos para tratar com a versão de/para base64.
Usando métodos de extensão
Podemos também definir métodos de extensão para realizar essa tarefa.
Lembrando que os métodos de extensão são definidos como estáticos, mas são chamados usando a sintaxe do método de instância. Seu primeiro parâmetro especifica em que tipo o método opera e o parâmetro é precedido pelo modificador this.
Os métodos de extensão só estarão no escopo quando você importar explicitamente o namespace para seu código-fonte com uma diretiva using.
Vamos criar uma classe chamada Base64ExtensionMethods com o código abaixo:
using System;
namespace CShp_Base64
{
public static class Base64ExtensionMethos
{
//codificando dados binários como base64
public static string Base64EncodeBytes(this byte[] inputBytes) =>
(Convert.ToBase64String(inputBytes));
//decodificando base64
public static byte[] Base64DecodeString(this string texto)
{
byte[] byteArrayDecodificado = Convert.FromBase64String(texto);
return (byteArrayDecodificado);
}
}
}
|
Agora podemos usar tanto os métodos da classe Conversor como os métodos de extensão para realizar a conversão de string para base64 e vice-versa.
Pegue o código
completo do projeto aqui:
CShp_Base64.zip
"E Jesus lhe
disse: Ninguém, que lança mão do arado e olha para trás, é apto para o reino de
Deus."
Lucas 9:62
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
C# - StreamReader, StringReader e TextReader . Qual a ... - Macoratti
C# - Imprimindo um arquivo texto - Macoratti
C# - Usando OpenFileDialog - Macoratti
C# - Formatando arquivos textos - Macoratti