2017-06-13 5 views
0

Schauen Sie sich das Code:C# Konvertieren von String in char - Unicode

string s = "0x00A5"; 
Console.WriteLine(((char)s).ToString()); //Error 
Console.WriteLine(((char)0x00A5).ToString()); 

Ich weiß, warum es ein Fehler ist, aber ich habe keine Ahnung, wie dieses Problem zu lösen.

Irgendwelche Vorschläge?

Edit:

string stringHex = "7A"; 
int intFromHex = int.Parse(stringHex , System.Globalization.NumberStyles.HexNumber) + 30; 
string hex = intFromHex.ToString("X"); 
switch(hex.Length) 
{ 
    case 2: 
     hex = "0x00" + hex; 
     break; 
    case 3: 
     hex = "0x0" + hex; 
     break; 
    case 4: 
     hex = "0x" + hex; 
     break; 
} 
char c = (char)hex; 
string s = "0x00A5"; 
Console.WriteLine(((char)s).ToString()); 
Console.WriteLine(((char)0x00A5).ToString()); 

Dies ist der gesamte Code. Ich versuche, eine Zeichenfolge mit zufälligen Unicode Chars zu generieren.

+0

Nun, was ist Ihre gewünschte Ausgabe? Was ist das Problem? – Wheels73

+0

betrachten Sie die Encoding-Klasse im System.Text-Namespace –

+1

'char c = (char) Convert.ToInt32 (" 0x00A5 ", 16);' für '¥' wenn das ist, was Sie fragen –

Antwort

4

Wenn Sie konvertieren möchten, nur ein Symbol, setzen Convert:

string s = "0x00A5"; 

    // ¥ 
    string result = ((char)Convert.ToInt32(s, 16)).ToString(); 

Wenn Sie mehrere diejenigen konvertieren wollen, müssen Sie sie mit regulären Ausdrücken extrahieren:

string s = "0x00A50x00200x0048"; 

    // ¥ H 
    string result = Regex.Replace(s, "0x[0-9A-Fa-f]{4}", 
    match => ((char)Convert.ToInt32(match.Value, 16)).ToString()); 
+0

Vielen Dank, dass geholfen – MyHomieJR

+0

@MyHomieJR: Sie sind herzlich willkommen! –

2

Versuchen Sie diese

int val = Convert.ToInt32("0x00A5", 16); 
char c = Convert.ToChar(val); 

oder

char c = (char)(Convert.ToInt32("0x00A5", 16)); 
Verwandte Themen