2017-06-13 58 views
0

看看這段代碼:C#將字符串轉換成char - 統一

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

我知道爲什麼會出現錯誤,但我不知道如何解決這個問題。

有什麼建議嗎?

編輯:

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()); 

這是整個代碼。我試圖生成隨機unicode字符串的字符串。

+0

那麼你的期望輸出是什麼?有什麼問題? – Wheels73

+0

查看System.Text命名空間中的Encoding類 –

+1

'char c =(char)Convert.ToInt32(「0x00A5」,16);'for'¥'如果多數民衆贊成你問 –

回答

4

如果要轉換隻是一個符號,把Convert

string s = "0x00A5"; 

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

如果要轉換幾個那些你有正則表達式來提取它們:

string s = "0x00A50x00200x0048"; 

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

謝謝你,幫助 – MyHomieJR

+0

@MyHomieJR:不客氣! –

2

試試這個

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

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