2013-11-14 78 views
1

我怎樣才能轉換十進制值ASCII,我試圖與十進制到ASCII皈依

var charStrs = Convert.ToString(receivedEvent.tagData.can_Msg.data[3]) + 
       Convert.ToString(receivedEvent.tagData.can_Msg.data[4]) + 
       Convert.ToString(receivedEvent.tagData.can_Msg.data[5]) + 
       Convert.ToString(receivedEvent.tagData.can_Msg.data[6]) + 
       Convert.ToString(receivedEvent.tagData.can_Msg.data[7]); 
var asStr = String.Concat(charStrs.Select(cs => (char)Int32.Parse(cs, NumberStyles.HexNumber))); 

我知道我的十進制數= 56 49 50 48 48 48 53 56 50 56和將其轉換爲ASCII時我會得到8120005828;但我在NumberStyles.HexNumber中得到錯誤它看起來不適用於wpf?

+3

這個問題的工作實在是不清楚 - 部分原因是可怕的代碼佈局,部分是因爲你還沒有真正解釋你想達到什麼清楚。樣本輸入和預期輸出,以及格式化良好的代碼都會省略不相關的位。 –

+0

@ user2933082你剛剛被Skeet'd。 –

+2

我仍然想知道這與WPF有什麼關係。 –

回答

4

我真的不知道是data[3]等什麼值,但與http://www.asciitable.com/

int[] values = { 56, 49, 50, 48, 48, 48, 53, 56, 50, 56 }; 
char[] chars = values.Select(x => (char)x).ToArray(); 
string str = new string(chars); 
Console.WriteLine(str); // "8120005828" 

部分你的問題的值可能是這些都是十進制數,但你試圖解析它們如十六進制數字。

+0

@Time S謝謝你這對我的工作:) – user2933082

0
data[0] = ((char)(Int32.Parse(data[0], NumberStyles.HexNumber))).ToString(); 
     Console.WriteLine(data.Aggregate((s1, s2) => s1 + (char)(Int32.Parse(s2, NumberStyles.HexNumber)))); 

這將會爲您的方案