2011-01-03 13 views
1

Was ist das VB.NET-Äquivalent dieses C# -Codes (Konvertieren einer ASCII-Zeichenfolge in Hexadezimal)?Was ist das VB.NET-Äquivalent dieses C# -Codes (Konvertieren einer ASCII-Zeichenfolge in Hexadezimalzeichen)?

public static string AsciiToHex(string asciiString) 
{ 
    string hex = ""; 

    StringBuilder sBuffer = new StringBuilder(); 
    for (int i = 0; i < asciiString.Length; i++) 
    { 
     sBuffer.Append(Convert.ToInt32(asciiString[i]).ToString("x")); 
    } 
    hex = sBuffer.ToString().ToUpper(); 

    return hex; 
} 
+0

http://www.developerfusion.com/tools/convert/csharp-to-vb/ Ermöglicht Ihnen, C# zu VB.net zu konvertieren. – Eugene

+1

Sie * verstehen *, dass die Anzahl der Ziffern variabel ist, oder? – Mehrdad

Antwort

5

Ein paar Dinge:

  1. Warum eine for Schleife verwenden, in der auch ein foreach Look funktioniert? (Die Antwort ist: nicht)
  2. Die ToUpper ist redundant, wenn wir das richtige Formatierungsflag wählen (X).
  3. Die Variable hex ist nutzlos.
  4. Convert.ToInt32 kann auf (int) verkürzt werden.
  5. Der Name "ASCII" ist eigentlich falsch - Sie arbeiten hier mit Unicode.
  6. Normalerweise erfordert dies eine Auffüllung, da das Ergebnis ToString("x") variable Länge hat: Für Zeichencodes < 16 ergibt es ein einzelnes Zeichen!

Dies lässt uns mit:

public static string CharToHex(string str) { 
    StringBuilder buffer = new StringBuilder(); 
    foreach (char c in str) 
     buffer.AppendFormat("{0:X2}", (int) c); 
    return buffer.ToString(); 
} 

... und in VB übersetzt:

Public Shared Function CharToHex(ByVal str As String) As String 
    Dim buffer As New StringBuilder() 

    For Each c As Char in str 
     buffer.AppendFormat("{0:X2}", Asc(c)) 
    End For 

    Return buffer.ToString() 
End Function 
+0

Sehr saubere Lösung! – Eugene

4
Public Shared Function AsciiToHex(asciiString As String) As String 
Dim hex As String = "" 
Dim sBuffer As New StringBuilder() 
For i As Integer = 0 To asciiString.Length - 1 
    sBuffer.Append(Convert.ToInt32(asciiString(i)).ToString("x")) 
Next 
hex = sBuffer.ToString().ToUpper() 
Return hex 
End Function 

über http://www.developerfusion.com/tools/convert/csharp-to-vb/

die eine von vielen Tools, die C# VB Umwandlungen tun können, und können mit dieser Suche gefunden: http://www.bing.com/search?q=c%23+to+vb+converter&src=IE-SearchBox&FORM=IE8SRC

+0

Anstelle von 'Convert.ToInt32' würde ich' AscW' verwenden ... –

+0

Verdammt, das Captcha hat mich gebremst. – Cyclone

+0

+1, das gleiche für Sie ;-) – Cyclone

2
Public Shared Function AsciiToHex(asciiString As String) As String 
Dim hex As String = "" 

Dim sBuffer As New StringBuilder() 
For i As Integer = 0 To asciiString.Length - 1 
    sBuffer.Append(Convert.ToInt32(asciiString(i)).ToString("x")) 
Next 
hex = sBuffer.ToString().ToUpper() 

Return hex 
End Function 

http://www.developerfusion.com/tools/convert/csharp-to-vb/

+0

+1 zu verwenden. Ich mag deine Antwort. ;-) – David

Verwandte Themen