2017-02-15 2 views
1

Ich schrieb eine Funktion, um eine Zeichenfolge in eine Hex-Zeichenfolge zu konvertieren. Also würde "abc" in "616263" umgewandelt werden. HierKonvertieren von Zeichen in CP1252 Hex in C#

ist die Funktion:

private string StringToHex(string myString) 
    { 
     int ctr, li_max; 
     string ls_hex = ""; 

     li_max = myString.Length; 
     for(ctr = 0; ctr < li_max; ctr++) 
      ls_hex = ls_hex + (Convert.ToInt16(myString[ctr])).ToString("x2"); 

     return ls_hex; 
    } 

Allerdings, wenn ich Unicode-Zeichen wie „

enter image description here

Wie kann ich den Hex-Wert für die richtige Codierung zu bekommen?
dh: 8B anstelle von 2039

+0

Sobald eine Zeichenfolge falsch codiert wurde, können Sie sie nicht wiederherstellen. Also muss der Code, der das Array byte [] gelesen und in eine Zeichenfolge konvertiert hat, korrigiert werden, um die richtige Codierung zu verwenden. Es ist wahrscheinlich der Code, der eine Datei liest, die repariert werden muss. – jdweng

Antwort

2

Sie benötigen die CP1252-Codierung bekommen verwenden, um die Bytes der Zeichenfolge zu erhalten:

private string StringToHex(string myString) 
{ 
    byte[] bytes = Encoding.GetEncoding(1252).GetBytes(myString); 
    return string.Concat(bytes.Select(b => b.ToString("X2"))); 
} 

Meine Ausgabe ist

8B616263

+0

Danke, es hat perfekt funktioniert. – Philippe