VB .NET- Convertendo String para Binary e vice-versa


 Neste artigo vou mostrar como converter string para binary e vice-versa usando a linguagem VB .NET.

A conversão de string para binary e vice-versa envolve o processo de codificar e decodificar:

A classe ASCIIEnconding representa uma codificação de caracteres ASCII de caracteres Unicode.

A classe ASCIIEncoding corresponde à página de código do Windows 20127. Como ASCII é uma codificação de 7 bits, os caracteres ASCII inferiores são limitados a 128 caracteres Unicode, de U+0000 a U+007F. Se você usar o codificador padrão retornado pela propriedade de Encoding.ASCII ou o construtor de ASCIIEncoding , a parte externa de caracteres que varia é substituída por um ponto de interrogação (?) antes que a operação de codificação seja executada.

Nota : ASCIIEncoding não fornece detecção de erro. Por razões de segurança, você deve usar UTF8Encoding, UnicodeEncoding, ou UTF32Encoding e habilitar a detecção de erros.

Para realizar essas operações usamos os métodos GetString() e GetBytes() :

No processo também usamos a classe StringBuilder cujo objetivo é modificar uma string sem que seja necessário criar um novo objeto.

Por exemplo a concatenação de strings em um loop pode ser uma destas situações onde o uso de StringBuilder pode melhorar muito o desempenho do seu código.

Podemos pensar no objeto StringBuilder como um buffer dinâmico que pode conter uma String com a habilidade de aumentar seu tamanho a partir do zero até a capacidade final do buffer. O tamanho do buffer vai crescendo a medida que o tamanho dos caracteres presentes no objeto StringBuilder vai aumentando.

 

Outro recurso usado no processo de conversão são as Expressões Regulares.

Uma expressão regular ou regex para simplificar, é um modelo que descreve uma certa quantidade de texto. A expressão regular mais simples consiste de um único caractere.

Ex: a => Este padrão irá coincidir com a primeira ocorrência do caractere em uma string. Se a string for "Isto é apenas um teste"  a primeira ocorrência será a letra a antes da letra p (de apenas).

As expressões regulares possuem 11 caracteres especiais conhecidos como meta caracteres, são eles:

Assim temos a oportunidade de rever muitos conceitos importantes no projeto de conversão.

Recursos usados :

Criando o projeto no VS Community

Abra o VS Community 2015  e clique em New Project;

A seguir selecione Visual Basic -> Windows -> Windows Forms Application;

Informe o nome Binary_ToString e clique no botão OK;

A partir da ToolBox inclua os seguintes controles no formulário form1.vb:

Disponha os controles conforme o leiaute da figura abaixo:

No menu PROJECT clique em Add Class e informe o nome Conversor;

A seguir vamos definir dois métodos estáticos (Shared) nesta classe :

Public Class Conversor
    Public Shared Function BinaryToString(ByVal Binary As String) As String
        Try
            Dim Characters As String = System.Text.RegularExpressions.Regex.Replace(Binary, "[^01]", "")
            Dim ByteArray((Characters.Length / 8) - 1) As Byte
            For Index As Integer = 0 To ByteArray.Length - 1
                ByteArray(Index) = Convert.ToByte(Characters.Substring(Index * 8, 8), 2)
            Next
            Return System.Text.ASCIIEncoding.ASCII.GetString(ByteArray)
        Catch
            Throw
        End Try
    End Function
    Public Shared Function StringToBinary(ByVal Text As String, Optional ByVal Separator As String = " ") As String
        Try
            Dim oReturn As New System.Text.StringBuilder
            For Each Character As Byte In System.Text.ASCIIEncoding.ASCII.GetBytes(Text)
                oReturn.Append(Convert.ToString(Character, 2).PadLeft(8, "0"))
                oReturn.Append(Separator)
            Next
            Return oReturn.ToString
        Catch
            Throw
        End Try
    End Function
End Class

A seguir vamos definir no evento Click do botão - Converter para String  - o seguinte código :

Private Sub btnConverter_Click(sender As Object, e As EventArgs) Handles btnConverterString.Click
        Try
            If Not String.IsNullOrWhiteSpace(txtBinary.Text) Then
                txtString.Text = Conversor.BinaryToString(txtBinary.Text)
            Else
                MessageBox.Show("Informe o valor a converter", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Catch ex As Exception
            MessageBox.Show("Erro : " & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
End Sub

Este código us

Finalmente no evento Click do botão de comando -  Converter para Binary - inclua o código abaixo:

 Private Sub btnConverterBinary_Click(sender As Object, e As EventArgs) Handles btnConverterBinary.Click
        Try
            If Not String.IsNullOrWhiteSpace(txtString.Text) Then
                txtBinary.Text = Conversor.StringToBinary(txtString.Text)
            Else
                MessageBox.Show("Informe o valor a converter", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Catch ex As Exception
            MessageBox.Show("Erro : " & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
End Sub

Executando o projeto e informando um texto para conversão obtemos o resultado abaixo:

Pegue o projeto completo aqui :   Binary_ToString.zip

Disse Jesus: "Na verdade, na verdade vos digo que quem ouve a minha palavra, e crê naquele que me enviou, tem a vida eterna, e não entrará em condenação, mas passou da morte para a vida"
João 5:24

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti