Byte Array to String mit dieser Methode (BC30469)

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Bartosz.

    Byte Array to String mit dieser Methode (BC30469)

    Hallo,
    wenn ich ein Byte-Array habe, wandle ich es normalerweise wie folgt zu einem String um:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim dBytes As Byte() = {68, 105, 101, 115, 32, 105, 115, 116, 32, 101, 105, 110, 32, 84, 101, 115, 116, 46}
    3. Dim str As String
    4. Dim enc As New System.Text.ASCIIEncoding()
    5. str = enc.GetString(dBytes)
    6. TextBox1.Text = str
    7. End Sub


    Ich habe eben eine – für mich neue Methode entdeckt. Ich kann auf sie nicht zugreifen. Ich habe schon gesehen, dass das eine Overridable Function ist. Was muss ich jetzt tun?
    BC30469 Visual Basic Der Verweis auf einen nicht freigegebenen Member erfordert einen Objektverweis.

    VB.NET-Quellcode

    1. Dim Test As Byte() = New Byte() {72, 97, 108, 108, 111}
    2. Dim unused As String = System.Text.Encoding.GetString(Test, 0, Test.Length)

    Du wendest sie doch schon (mit anderer Überladung) an: str = enc.GetString(dBytes)
    Diese Methode muss auf eine Objektinstanz angewendet werden. Und das ist bei Dir enc. Eben weil Du festlegen musst, was für ein Encoding Du verwenden willst. System.Text.Encoding.GetString(Test, 0, Test.Length) ist ja ohne Angabe. Das müssen Erbklassen konkret festlegen. So wie eben System.Text.ASCIIEncoding()
    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.
    Achso ok. Das, was im ersten Codeschnipsel steht, ist genau das, also die Lösung dafür? Aber das sah gar nicht danach aus..

    Ah Moment... Ich war gerade konfus wegen dem Overridable


    VB.NET-Quellcode

    1. Dim enc As System.Text.Encoding = New System.Text.ASCIIEncoding
    Jetzt sehe ich's. Guten Morgen

    Ok, danke @VaporiZed
    An die Neulinge: Nutzt Option Strict On und Option Infer Off. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.