【问题标题】:decimal to hexadecimal in c# with mistake "An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll"c#中的十进制到十六进制错误“mscorlib.dll中发生'System.FormatException'类型的未处理异常”
【发布时间】:2013-11-27 16:41:16
【问题描述】:

我的代码很简单:

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

otdr_Portobject 是一个 COM 端口。

int_averagesCon 是数值为 64 的 NumericUpDown。

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

在 mscorlib.dll 中发生了“System.FormatException”类型的未处理异常

有人知道我为什么一直收到这个错误吗?

【问题讨论】:

  • 哪个是异常的堆栈跟踪?

标签: c# hex decimal


【解决方案1】:

指定的“X2”格式只有整型支持。

NumericUpDown.Value 是小数。

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

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

【讨论】:

    【解决方案2】:

    试试这个

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

    这将首先从double 创建一个byte 值,然后尝试格式化。

    【讨论】:

      【解决方案3】:

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

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

      decimal x = 64;
      ((int)x).ToString("X2");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-09
        • 1970-01-01
        • 2011-06-01
        • 1970-01-01
        • 2011-07-07
        • 1970-01-01
        • 2011-02-04
        • 2015-11-10
        相关资源
        最近更新 更多