0

我的代码很简单:

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

otdr_Portobject是一个 COM 端口。

int_averagesCon是一个数值为 64 的 NumericUpDown。

当我运行程序时,总是有一个消息框显示:

mscorlib.dll 中出现“System.FormatException”类型的未处理异常

有人知道为什么我不断收到此错误吗?

4

3 回答 3

3

指定的“X2”格式仅由整数类型支持。

NumericUpDown.Value 是一个小数。

您需要先将十进制值转换为整数类型,例如:

Convert.ToInt32(int_averagesCon.Value).ToString("X2")+ ...
于 2013-11-14T15:29:15.557 回答
0

试试这个

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

这将从第一个值创建一个bytedouble,然后尝试格式化。

于 2013-11-14T15:30:47.853 回答
0

您不能将 X2(二进制格式)与十进制类型一起使用。

简单的解决方案是将十进制转换为整数并调用字符串。

decimal x = 64;
((int)x).ToString("X2");
于 2013-11-14T15:31:21.990 回答