Die Community zu .NET und Classic VB.
Menü

VB.NET-Tipp 0074: Base64-Codierung

 von 

Beschreibung

Base64 -Codierung ist ein bekanntes Verfahren um Binär-Daten als String darzustellen. Es wird etwa bei der Codierung von Dateianhängen verwendet.

Die 64 (=2^6) Werte, die ein Zeichen bei Base64 annehmen kann, entsprechen 6 Bits. Folglich werden immer 3 Byte an Eingabedaten in 4 Byte Base64-kodierte Daten umgewandelt. Soll eine drei-teilerfremde Anzahl Bytes konvertiert werden, werden am Ende der Eingabedaten ein oder auch zwei Füllzeichen eingefügt, um die Vierer-Teilbarkeit der Base64-codierten Daten aufrechtzuerhalten. WhiteSpaces (Tab, Zeilenvorschub, Leerzeichen) in den Base64-kodierten Daten werden beim zurückkonvertieren überlesen, andere Zeichen verursachen Konvertierungsfehler.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Framework-Version(en):

.NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5

.NET-Version(en):

Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008

Download:

Download des Beispielprojektes [12,62 KB]

' Dieser Quellcode stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!

' Projektversion:   Visual Studio 2005
' Option Strict:    An
'
' Referenzen: 
'  - System
'  - System.Data
'  - System.Drawing
'  - System.Windows.Forms
'  - System.Xml
'
' Imports: 
'  - Microsoft.VisualBasic
'  - Microsoft.VisualBasic.ControlChars
'  - System
'  - System.Collections
'  - System.Collections.Generic
'  - System.Data
'  - System.Drawing
'  - System.Diagnostics
'  - System.Windows.Forms
'

' ##############################################################################
' ############################### frmBase64.vb #################################
' ##############################################################################
Option Explicit On
Option Strict On

Imports System.Text
Imports System.Windows.Forms
Imports Microsoft.VisualBasic.ControlChars

''' <summary>
''' Kleines Form, um mit den Konvertierungs-Funktionen Convert.ToBase64String() 
''' und Convert.FromBase64String() experimentieren zu können
''' </summary>
Public Class frmBase64
    Private Sub frmBase64_Load(ByVal sender As Object, _
        ByVal e As EventArgs) Handles MyBase.Load

        FillGrid(New Byte() {152, 0, 7, 99, 51, 255})
    End Sub

    Private Sub FillGrid(ByVal Bytes As Byte())
        Me.DataGridView1.RowCount = Bytes.Length + 1
        For I As Integer = 0 To Bytes.Length - 1
            Me.DataGridView1(0, I).Value = Bytes(I)
        Next
    End Sub

    Private Sub btToBase64_Click(ByVal sender As Object, _
        ByVal e As EventArgs) Handles btToBase64.Click

        Dim Bytes(DataGridView1.RowCount - 2) As Byte
        Dim I As Integer

        Try
            For I = 0 To Bytes.Length - 1
                Bytes(I) = CByte(Me.DataGridView1(0, I).Value)
            Next
            RichTextBox1.Text = Convert.ToBase64String(Bytes)
        Catch ex As Exception
            MsgBox(String.Concat("Eingabe-Fehler in Zeile ", _
                I + 1, ":", Lf, ex.Message))
        End Try
    End Sub

    Private Sub btToBytes_Click(ByVal sender As Object, _
        ByVal e As EventArgs) Handles btToBytes.Click

        Try
            Dim Bytes As Byte() = Convert.FromBase64String(RichTextBox1.Text)
            FillGrid(Bytes)
        Catch ex As Exception
            MsgBox(String.Concat("Eingabe-Fehler in Textbox:", Lf, ex.Message))
        End Try
    End Sub
End Class

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 1 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Dirk Nestl am 24.05.2008 um 11:23

Das Beispiel ist eigentlich nicht schlecht, nur schwer nachzuvollziehen. Hier geht es ja eigentlich darum, einen String in Base64 und zurück zu wandeln. Also beschränken wir uns mal darauf:

Dim bByteArray() As Byte
Dim sUnencoded As String = "Dies ist ein Text!"
Dim sEncoded As String

'Encodieren
bByteArray = System.Text.Encoding.ASCII.GetBytes(sUnencoded)
sEncoded = System.Convert.ToBase64String(bByteArray)

'Decodieren
bByteArray = System.Convert.FromBase64String(sEncoded)
sUnencoded = System.Text.Encoding.ASCII.GetString(ByteArray)


Statt Encoding.ASCII kann natürlich auch Encoding.Unicode oder eine der anderen Möglichkeiten genommen werden (Möglichkeiten siehe Intellisense-Box).