String Array to Byte Array!

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von Cheffboss.

    String Array to Byte Array!

    Hallo!
    Ich möchte gerne ein String Array in ein Byte Array umwandeln.
    Da ich keine passende Convert Funktion gefunden habe,wollte ich dies Manuell eingeben.
    Leider kommt, immer eine Fehlermeldung!
    Wie kann den String() in ein Byte() umwandeln?
    Vielen Dank!

    VB.NET-Quellcode

    1. Dim test() As String = Me.TextBox1.Text.Split(CChar("#"))
    2. Dim neu() As Byte
    3. For i As Integer = 0 To test.Length - 1
    4. neu(i) = CByte(test(i))
    5. Next

    Ungültige Konvertierung von der Zeichenfolge "77 in Typ Byte.
    Bilder
    • bug.png

      26,52 kB, 865×407, 424 mal angesehen
    Visual Basic.NET 8o
    MS-SQL
    8o
    woher soll der PC Wissen, wie du einen ganzen String in ein einzelnes Byte konvertieren willst?
    Vorallem nachdem das wirklich nicht sonderlich viel Sinn ergibt.
    Was hast du vor?
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    VB.NET-Quellcode

    1. Dim test As String = Nothing
    2. Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    3. Dim data() As Byte = System.IO.File.ReadAllBytes("F:\Temp\atomzeit.exe")
    4. Dim z As String
    5. For Each D As String In data
    6. test += D & "#"
    7. Next
    8. TextBox1.Text = test
    9. End Sub


    Ich möchte eine Datei/Programm einlesen in eine Textbox1
    und dann die Textbox1 per TCP verschicken,
    und diese dann als Byte() wieder zur Datei/Programm umwandeln.
    Visual Basic.NET 8o
    MS-SQL
    8o
    Schau dir mal die Encoding Klasse an. Mit Encoding.UTF8.GetBytes() kannste dir aus nem string die Bytes holen mit Encoding.UTF8.GetString() knnste die wieder in einen String umwandeln.
    Dennoch würde ich auch eher zu nem Stream-/FileReader raten oder eben, wenn schon so, dann mit File.ReadAllText().

    Edit: sehe es jetzt erst... was willst du mit rohen bytes einer .exe in einer textbox? einen decompiler bauen? da dürfte sich nicht all zu viel sehen lassen...
    @EaranMaleasi
    "Edit: sehe es jetzt erst... was willst du mit rohen bytes einer .exe in einer textbox? einen decompiler bauen? da dürfte sich nicht all zu viel sehen lassen..."

    Hallo!
    Ich möchte keinen decompiler programmieren, wie ich oben geschrieben habe.
    Möchte ich eine Datei auslesen und diese als String an einen Client schicken!
    TCP Anwendung!
    Visual Basic.NET 8o
    MS-SQL
    8o
    @EaranMaleasi,
    @Runshak
    Vielen Dank,
    ich werde mich morgen dann mal intensiv mit diesem Thema beschäftigen!
    Leider habe ich bis jetzt nur Codes für txt_Files gefunden!
    Ich hoffe es ist auch möglich, mit ganzen Dateien zu arbeiten!
    (alle Formate)
    Visual Basic.NET 8o
    MS-SQL
    8o
    Vielen Dank, für die Links.
    Ich bin leider nicht weiter gekommen.
    Mit diesem Code kann ich eine kleine Datei übertragen z.B "62,5 KB (64.000 Bytes)".
    Sobald ich versuche eine Größere Datei zu senden, passiert nichts!

    Hier der Code:

    VB.NET-Quellcode

    1. Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
    2. ' Datei auslesen und versenden!
    3. Dim path As String = System.IO.Path.Combine("F:\Temp\", "atomzeit.exe")
    4. Dim file As Byte() = IO.File.ReadAllBytes(path)
    5. Winsock1.SendenClient(Convert.ToBase64String(file))
    6. End Sub


    VB.NET-Quellcode

    1. Private Sub Winsock1_DateiEmpfangServer(dateiempfang As String) Handles Winsock1.DateiEmpfangServer
    2. Me.TextBox3.Text = dateiempfang
    3. ' Datei empfangen
    4. Dim b() As Byte
    5. Static file_buffer As String
    6. Do
    7. file_buffer += Me.TextBox3.Text
    8. b = Convert.FromBase64String(file_buffer)
    9. If b.Length >= 64000 Then Exit Do
    10. Loop
    11. IO.File.WriteAllBytes(Application.StartupPath & "\Downloads\testNEU1.exe", b)
    12. MsgBox("gespeichert!")
    13. End Sub

    Visual Basic.NET 8o
    MS-SQL
    8o
    Ich hatte dir sowieso schon mal geschrieben, wie man sowas lösen sollte. Und ebenfalls, dass du winsock wegschmeißen sollst. Ich versteh nicht, warum du dich daran klammerst. Was ist denn an den .Net Boardmitteln verkehrt?
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Das file_buffer += Me.TextBox3.Text is aber nicht sehr gesund denke ich, man zählt keine Strings zusammen.
    Willst du die beiden Strings wirklich zusammenrechnen? oder nur mit einem & verknüpfen?

    Wenn du rechnen willst halte den String in einer Variable als Integer oder was auch immer, selbiges gilt für file_buffer.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.
    @Vielen Dank, für eure Antwort!

    Hallo!
    Leider habe ich bis heute noch keine Lösung gefunden!
    Ich habe mich informiert, man kann auch ein HEX einer Datei als String verschicken und diesen wieder in eine Datei umwandeln.
    Deshalb suche ich Beispielcodes, wie man aus einer beliebigen Datei den HEX Wert auslesen kann, und diesen wieder als Datei abspeichern kann.
    Mit der Suchmaschine Google habe ich noch keine sinnvolle Information darüber gefunden!
    Ich freue mich auf eure Hilfe!
    Vielen Dank!
    Visual Basic.NET 8o
    MS-SQL
    8o
    @Cheffboss
    Was genau willst Du überhaupt erreichen?
    Wenn ich den Thread durchlese sehe ich nur wildes herumgefriemel mit irgendwelchen Codes, die Du wahrscheinlich selbst nicht verstehst.
    Also was genau hast Du vor? Versuche, das so genau wie möglich zu beschreiben, und am besten, ohne eine Zeile Code zu schreiben.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Hallo!
    Ich möchte mit meiner selbstgeschriebene Winsock Class, Dateien übers Internet/LAN versenden.
    Mit meiner Winsock Class kann ich Strings verschicken!
    Mit dem Befehle Convert.ToBase64String() wollte ich den String Byte() als String verschicken!
    Leider war dies ohne Erfolg!
    Jetzt habe ich mitbekommen, dass es viel einfacher wäre wenn man eine Datei als HEX ausliest, und diese HEX-Werte als String stückchenweise verschickt, und diese später wieder zu einer normalen Datei umwandeln kann.
    Deshalb suche ich nun eine Möglichkeit aus einer beliebigen Datei den HEX Wert auszulesen und diesen dann verschicken!
    Im Anhang, ein Beispiel, der HEX einer Datei.
    Vielen Dank!

    Wichtig:
    Ich suche immer noch jemand, der dies erledigten kann, gegen kleine Bezahlung per PayPal!
    Mehr Infos? PN
    Bilder
    • hex.png

      70 kB, 688×874, 228 mal angesehen
    Visual Basic.NET 8o
    MS-SQL
    8o
    Du willst also nur Dateien senden?
    Muss es unbedingt Winsock sein? Denn Winsock ist mit den Strings eine Ebene höher angesiedelt, als nötig wäre. In Dateien (egal ob das eine .txt oder .mp3 oder sonstwas ist) stehen Bytes. Weißt Du, was Bytes sind?
    Mit der System.Net.Sockets.TcpClient-Klasse (und dementsprechend TcpServer) kannst Du einen Kanal aufbauen, über den Du in beide Richtungen Bytes versenden kannst.
    Ein Programm spielt Server, das andere Client. Sende zuerst die Länge der Datei und dann den Inhalt. Auf der anderen Seite liest Du zuerst die Länge der Datei und dann so viele Bytes, wie durch die Länge angegeben sind. Du kannst die Bytes aus einer Datei mit System.IO.File.ReadAllBytes lesen und mit WriteAllBytes schreiben.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    @Niko Ortner
    Ich möchte gerne dass es eine Winsock Class gibt, diese String/Bilder und Daten verschicken kann.
    (Siehe Beispielcode)
    Es sollte bis 500MB Dateien schnell versenden, am besten noch mit einer Progressbar!
    Das Versenden eines Strings und ein Bild geht problemlos!

    VB.NET-Quellcode

    1. Private Sub Beispiel_Empfangene()
    2. If Befehle.StartsWith("strt#") Then ' Strings
    3. ' Problemlos!
    4. ElseIf BefehleStartsWith("image#") Then ' Bild
    5. ' Probemlos!
    6. ElseIf Befehle.StartsWith("file#") Then ' Datei
    7. ' ---> PROBLEM!
    8. 'code....
    9. End If
    10. End Sub
    Visual Basic.NET 8o
    MS-SQL
    8o