2013-11-14 44 views
0

我的代碼非常簡單:十進制爲十六進制在C#中有錯誤「類型‘System.FormatException’未處理的異常出現在mscorlib.dll」

string aveint = "aveint"; 
otdr_Portobject.WriteLine(aveint +int_averagesCon.Value.ToString("X2")+ "\n"); 

otdr_Portobject是一個COM端口。

int_averagesCon是具有值的NumericUpDown 64.

當我運行PROGRAMM,有常是一個消息顯示:

類型的 'System.FormatException' 未處理的異常出現在mscorlib.dll

有人知道爲什麼我不斷收到此錯誤嗎?

+0

這是異常的堆棧跟蹤? –

回答

3

指定的「X2」格式僅由整型類型支持。

NumericUpDown.Value是一個小數。

您需要首先你的十進制值轉換爲整數類型,例如:

Convert.ToInt32(int_averagesCon.Value).ToString("X2")+ ... 
+0

非常感謝你,現在它工作。 – Adam

0

試試這個

otdr_Portobject.WriteLine(aveint +((byte)int_averagesCon.Value).ToString("X2")+ "\n"); 

這將創建一個從double第一個byte值,然後嘗試進行格式化。

0

您不能使用十進制類型的X2(二進制格式)。

簡單的解決方案是將十進制轉換爲整數並將該調用轉換爲字符串。

decimal x = 64; 
((int)x).ToString("X2"); 
相關問題