none
MidB Code von VB6 nach .Net konvertieren RRS feed

  • Frage

  • dim s as string
    s="der test und ein bisschen mehr 0102"

    Dim c(49) As Byte

    For i = 1 To Len(s) * 2
                    c(i) = AscB(MidB(s, i))
                 Next i

    Hi zusammen, wie bekomme ich folgenden Code nach VB.Net konvertiert. MidB klappt ja nicht mehr .
    Ich habe es schon mit
    Fori = 1 ToLen(s) - 1 * 2

      b = ae.GetBytes(s.Substring(i, 1))

        c(i) = b(0)

    Nexti

    Aber wenn ich jetzt C vergleiche mit dem VB6 Code habe ich da ein anderes Ergebnis.

    Freitag, 22. Juni 2012 11:05

Antworten

  • Hallo Thomas

    Deinen VB6 code verstehe ich nicht ganz. Das Umwandeln eines strings n ein byte array unter Zugrundelegung einer bestimmten Encoding Klasse geht in NET so:

    Dim b() as byte = System.Text.Encoding.DEFAULT.GetBytes(s)

    DEFAULT wäre dann der Windows basierende Zeichensatz. Alternativ geht auch Ascii oder UTF8

    Gruss Ellen

    Nachtrag: Hier die Info zu weiteren Encoding Eigenschaften


    Ich benutze/ I'm using VB2008 & VB2010


    Freitag, 22. Juni 2012 11:30
  • Hi zusammen.

    Ich bin nicht sicher, ob das bereits berücksichtigt wurde, aber es sind 2 Dinge zu beachten:

    a) Visual Basic Strings sind in .Net intern offenbar alle Unicode (und damit das Byte-Array ggf. anders). Probier auch mal Ellens Beispiel mit dem Encoding.ASCII aus, wenn deine Werte noch nicht stimmen.

    b) Das von dir verwendete Substring ist im Gegensatz zu Mid NULLBASIERT, also um 1 Position verschoben. Deine For-Schleife fängt bei Index I = 1 an. Das könnte auch eine Fehlerursache bzw. der Grund für die unterschiedlichen Werte sein.

    Hth, Dennis.

    MID(B)-Dokumentation

    Substring-Dokumentation

    Montag, 25. Juni 2012 08:31

Alle Antworten