VB 2010 Express String (Normaler Text) zum einen Byte oder binären code und zurück zum String (Text)

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    VB 2010 Express String (Normaler Text) zum einen Byte oder binären code und zurück zum String (Text)

    Hallo liebe Community,

    ich würde sehr gerne ein normalen Text in einem Byte oder binärcode convertieren. Ich habe im Internet diesen Code gefunden:

    VB.NET-Quellcode

    1. '------------------Daten(Bytearray) in String und zurück-------------------
    2. Public Function StringToByteArray(ByRef str As String) As Byte()
    3. Return Convert.FromBase64String(str)
    4. End Function
    5. Public Function ByteArrayToString(ByRef Barr() As Byte) As String
    6. Return Convert.ToBase64String(Barr)
    7. End Function


    Doch ich weiß leider nicht wie ich die Funktionen aufrufe und ob sie überhaupt funktionieren :/
    momentan habe ich die Funktion: StringToByteArray so aufgerufen:

    VB.NET-Quellcode

    1. StringToByteArray(Textbox1.text)


    Es gibt zwar kein Fehler aus, aber es wird auch nichts angezeigt. Also ich würde gerne den Convertieren Text mir auch angezeigen lassen.

    Hoffentlich habe ich es gut erklärt :)
    Danke im vorraus!
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    Eine Function gibt dir einen Wert zurück. Diesen Wert musst du irgendwo anzeigen um ihn sehen zu können. Wo machst du das?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Die von Dir gefundenen Codeteile sind Funktionen, also geben sie Werte zurück. Wenn Du StringToByteArray(Textbox1.text) verwendest, ja, dann gibt sie auch ein Wert zurück - den Du aber nicht verarbeitest. Wenn Du den Rückgabewert anzeigen lassen willst, musst Du ihn auch entsprechend zuweisen: TextBox2.Text = StringToByteArray(Textbox1.text), falls Du eine 2. Textbox mit jenem Namen hast. Fehlen da etwa noch einige VB.Net-Grundlagen?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @mrMo ich denke, ich gebe noch nirgendwo einen Wert aus^^ Zumindest wird mir auch nichts angezeigt und so.
    Ich denke auch mit (z.b.) textbox1.text = DERFUCTIONSNAME würde ich den Wert auslesen können oder?

    //EDIT
    @VaporiZed Das Problem ist, das ich mich noch nie wirklich mit Funktionen beschäftigt habe. Ich weiss, das sie Werte ausgeben aber ich tu mich immer noch schwer beim auslesen dieser Werte.
    ich habe gerade mal versucht, meinen Text in der Textbox1 zum Convertierten Text in einer Textbox2 auslesen lasse das sah dann so aus:

    VB.NET-Quellcode

    1. TextBox2.Text = StringToByteArray(TextBox1.Text)


    Nur das Problem ist hier zeigt er mir ein Fehler an: StringToByteArray(TextBox1.Text)
    Da steht: Der Wert vom Typ "1-dimensionales Array von Byte" kann nicht in "String" konvertiert werden.
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ClonkAndre“ ()

    @ClonkAndre ZUnächst musst Du bedenken, dass StringToByteArray() einen Base64String erwartet, also StringToByteArray("Hallo Welt") schlägt fehl.
    Was Du testen kannst und wozu die beiden Convert-Funktionen da sind:
    Du könntest ein Image in einen Base64-String konvertieren und Dir den Output ansehen, diesen String zurückkonvertieren und Dir das Bild ansehen.
    Dazu empfehle ich Dir, ToBase64String mit einem zweiten Parameter aufzurufen: Convert.ToBase64String(Barr, Base64FormattingOptions.InsertLineBreaks)
    Sieh Dir mal dieses Beispiel an, Form mit 2 Button, RichTextBox und PictureBox:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Drawing.Imaging
    3. Public Class Form1
    4. Dim base64 As String
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. Dim by As Byte()
    7. Dim bmp = New Bitmap("C:\Temp\Base.jpg") ' irgend ein Bild
    8. Using ms = New MemoryStream
    9. bmp.Save(ms, ImageFormat.Png)
    10. by = ms.ToArray()
    11. End Using
    12. ' Länge aufgerundet bestimmen:
    13. ' https://de.wikipedia.org/wiki/Base64
    14. Dim len = CInt(by.Length * 1.4)
    15. ' Char-Array für den Base64-String
    16. Dim charArray As Char() = New Char(len) {}
    17. Dim len2 = Convert.ToBase64CharArray(by, 0, by.Length, charArray, 0, Base64FormattingOptions.InsertLineBreaks)
    18. Me.base64 = New String(charArray, 0, len2)
    19. Me.RichTextBox1.Text = base64
    20. End Sub
    21. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    22. ' Deserialisierung:
    23. ' Aus dem Base64-String ein Byte-Array generieren
    24. Dim array As Byte() = Convert.FromBase64CharArray(base64.ToCharArray(), 0, base64.Length)
    25. ' und als Bitmap instanziieren
    26. Using ms As New MemoryStream(array)
    27. Me.PictureBox1.Image = New Bitmap(ms)
    28. End Using
    29. End Sub
    30. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Danke auf jeden fall für dein super Code!
    Nur habe ich jetzt einen anderen Code gefunden der so aussieht:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 'Dieser Code ist dazuda um den Text in einer Textbox zu einem Byte zu konvertieren
    2. Dim hexstring As String = TextBox1.Text 'Textbox1 für den normalen Text
    3. Dim array As Byte() = Encoding.ASCII.GetBytes(hexstring)
    4. TextBox2.Text = BitConverter.ToString(array) 'Textbox2 für den Byte
    5. End Sub
    6. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click 'Dieser Code ist dazuda um den Byte wieder zurück in einem text zu konvertieren.
    7. Dim sBytes As String = TextBox2.Text ' Die Textbox wo der Byte drinne steht
    8. Dim bytes As Byte() = sBytes.Split("-"c).[Select](Function(x) Byte.Parse(x, Globalization.NumberStyles.HexNumber)).ToArray()
    9. TextBox3.Text = System.Text.Encoding.ASCII.GetString(bytes) 'Die Textbox die den konvertierten Text wiedergibt
    10. End Sub
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    @ClonkAndre Für String => Byte() => String ist das genau das Richtige. :thumbup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!