VB.NET-Tipp 0074: Base64-Codierung
von Spatzenkanonier
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: | 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: |
' 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).