十进制值的String.Format扼流圈?

问题描述:

我希望下面的两个测试(针对NUnit编写)都可以通过,但Decimal版本的失败是“System.FormatException:格式说明符无效”,正如Double版本一样。我无法弄清楚为什么。有人可以摆脱灯光吗?十进制值的String.Format扼流圈?

谢谢; 邓肯

[Test] 
public void Integer_Format_Hex() 
{ 
    //Assume 
    Int32 myValue = 11101110; 

    //Arrange 

    //Act 

    //Assert 
    Assert.That(String.Format("0x{0:X8}" , myValue) , Is.EqualTo("0x00A963B6")); 
} 

[Test] 
public void Decimal_Format_Hex() 
{ 
    //Assume 
    Decimal myValue = 11101110m; 

    //Arrange 

    //Act 

    //Assert 
    Assert.That(String.Format("0x{0:X8}" , myValue) , Is.EqualTo("0x00A963B6")); 
} 

[Test] 
public void Decimal_Format_Hex2() 
{ 
    //Assume 
    Decimal myValue = 11101110m; 

    //Arrange 

    //Act 

    //Assert 
    Assert.That(myValue.ToString("X") , Is.EqualTo("00A963B6")); 
} 
+3

尊敬的甜jeebus方法名称 – Woot4Moo 2010-11-08 18:24:18

+0

可能重复的[如何在十六进制和十进制数字之间转换数字](http://*.com/questions/74148/how-to-convert-numbers-between-hex-and -decimal-in-c) – NotMe 2010-11-08 18:25:24

+0

@ Woot4Moo:无参数! @Chris Lively:这当然是相关的,但是您提供的链接中的代码示例在使用时显示为FAIL。 – Duncan 2010-11-08 18:32:54

http://msdn.microsoft.com/en-us/library/fzeeb5cd(v=VS.90).aspx

Exerpt “的格式参数可以是任何有效的标准数字格式说明除了d,R和X ....”

真棒。