2015-10-09 142 views
0

我想要一個字符串與十六進制FFFFFFFF7DA98035並在我的程序中的文本框中顯示其擴展的ASCII字符。我有-80的問題,並沒有顯示任何東西。C# - 嘗試轉換字符串(與十六進制)在文本框中顯示擴展的ASCII字符

Visual Studio編譯時沒有錯誤,但在解析字符串時引發異常。

private static string ConvertHextoAscii(string HexString) 
{ 
    byte[] data = new byte[HexString.Length/2]; 

    for (int i = 0; i < HexString.Length - 1; i += 2) 
    { 
     data[i/2] = byte.Parse(HexString.Substring(i, 2)); 
    } 

    return Encoding.GetEncoding("Windows-1252").GetString(data); 
} 

任何幫助,將不勝感激。

+1

什麼實際拋出的異常? – LexyStardust

+0

https://ideone.com/WDA0ue檢查此代碼 – kevintjuh93

+0

「FFFFFFFF7DA98035」不包含足夠明智的「擴展ASCII字符」,並且不代表任何人類語言中的字符串。只有使用BitConverter.ToString(數據)才能產生可​​識別的內容。 –

回答

2

byte.Parse期待一個包含整數(十進制)的字符串。但是,HexString.Substring(i, 2)將返回一個十六進制數(作爲字符串)。

執行下列指示byte.Parse期待一個十六進制數字:

data[i/2] = byte.Parse(HexString.Substring(i, 2), NumberStyles.HexNumber); 
+0

'Convert.ToByte(HexString.Substring(i,2),16);' – kevintjuh93

+0

是的。這也可以工作 –

+0

我也會像在這個例子中一樣使用'Linq':https://ideone.com/WDA0ue – kevintjuh93

相關問題