Int64.MinValue的十六进制文字

时间:2014-03-18 14:37:13

标签: c# visual-studio-2010 hex

我正在尝试将Int64.MinValue(-0x8000000000000000)写为负十六进制,但Visual Studio 2010不允许我,因为它假定0x8000000000000000必须是ulong文字,并且无符号数不能为负数。这有解决方法吗?我注意到在另一个线程中使用了checked关键字,但它没有解决这个问题。在这种情况下,我真的想在十进制上使用十六进制表示法。

有趣的是,这不会发生十进制表示法。

2 个答案:

答案 0 :(得分:3)

这显示了实现它的几种可能方法:

static void Main(string[] args)
{
    Int64 minValue = -9223372036854775808;
    Int64 minValueViaHex = Int64.Parse("8000000000000000", NumberStyles.AllowHexSpecifier);
    Int64 minValueViaHexInline = unchecked((long)0x8000000000000000L);

    Console.WriteLine("Decimal match : {0}", Int64.MinValue == minValue);
    Console.WriteLine("Via Hex match : {0}", Int64.MinValue == minValueViaHex);
    Console.WriteLine("Via Hex inline: {0}", Int64.MinValue == minValueViaHexInline);
}

输出:

Decimal match : True
Via Hex match : True
Via Hex inline: True

答案 1 :(得分:1)

这个怎么样?

const Int64 test = unchecked((long)0x8000000000000000);
Trace.Assert(test == Int64.MinValue);

或者那不是你的意思吗?