Hi,
ich möchte einen String in seine hexadezimale Darstellung umwandlen und dann wieder zurückübersetzen.
MIr ist klar, dass diese Funktionen "kulturabhängig" sein müssen, da ja die Darstellung des Strings vom Encoding abhängt.
So hab ich das hinbekommen:
Ich habe das für alle möglichen Hex Kombinationen erfolgreich getestet.
Trotzdem habe ich meine Zweifel an der Quallität der Funktionen.
1. Die Routinen verwenden "alten" VB Code aus dem "Visual Basic" Namespace ...
2. Jedes Zeichen des Eingabestrings wird in EIN Hex 2er-Tupel übersetzt. Das kann nicht allgemeingültig sein, da ja ein Zeichen in einem String durchaus aus zwei oder mehr Bytes bestehen kann.
Wie macht man denn sowas richtig ?
LG
Peter
ich möchte einen String in seine hexadezimale Darstellung umwandlen und dann wieder zurückübersetzen.
MIr ist klar, dass diese Funktionen "kulturabhängig" sein müssen, da ja die Darstellung des Strings vom Encoding abhängt.
So hab ich das hinbekommen:
VB.NET-Quellcode
- Public Function S2X(ByRef s As String) As String
- Dim Data = s
- Dim sVal As String
- Dim sHex As String = ""
- While Data.Length > 0
- sVal = Microsoft.VisualBasic.Conversion.Hex(Microsoft.VisualBasic.Strings.Asc(Data.Substring(0, 1).ToString()))
- sHex = sHex & sVal.PadLeft(2, "0"c)
- Data = Data.Substring(1, Data.Length - 1)
- End While
- Return sHex
- End Function
- Function X2S(ByRef s As String) As String
- Dim sb As New System.Text.StringBuilder(s.Length \ 2)
- For i As Integer = 0 To s.Length - 2 Step 2
- sb.Append(Chr(Convert.ToByte(s.Substring(i, 2), 16)))
- Next
- Return sb.ToString
- End Function
Ich habe das für alle möglichen Hex Kombinationen erfolgreich getestet.
Trotzdem habe ich meine Zweifel an der Quallität der Funktionen.
1. Die Routinen verwenden "alten" VB Code aus dem "Visual Basic" Namespace ...
2. Jedes Zeichen des Eingabestrings wird in EIN Hex 2er-Tupel übersetzt. Das kann nicht allgemeingültig sein, da ja ein Zeichen in einem String durchaus aus zwei oder mehr Bytes bestehen kann.
Wie macht man denn sowas richtig ?
LG
Peter