2013-11-14 3 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.

, когда я запустить программка, есть все дни MessageBox показ:

Необработанное исключение типа '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"); 

Это создало бы byte значение из double первой, а затем попробовать форматирование.

0

Вы не можете использовать X2 (двоичный формат) с десятичным типом.

Простым решением было бы присвоить десятичное целое целому числу и вызвать вызов в строку.

decimal x = 64; 
((int)x).ToString("X2"); 
Смежные вопросы