C64中的Int64似乎太短了

时间:2013-03-11 23:12:10

标签: c# visual-studio-2010

我正在尝试将最大的int64值写入命令行。我尝试使用0x1111111111111111这是16个,而visual studio说这是int64。我原以为这将是int16。这里缺少什么?

3 个答案:

答案 0 :(得分:6)

0x是十六进制而不是二进制文字的前缀。这意味着您的号码的二进制表示为0001000100010001000100010001000100010001000100010001000100010001

遗憾的是,C#中没有二进制文字,因此您必须自己进行计算(0x7FFFFFFFFFFFFFFF)或使用Convert类,例如:

short s = Convert.ToInt16("1111111111111111", 2); // "2" for binary

为了获得最大的 Int64 号码,您无需执行任何自己的计算,因为在此字段中您已经可以使用它:

Int64.MaxValue 

答案 1 :(得分:3)

文字0x1111111111111111是十六进制数。每个十六进制数字可以用四位表示,所以16位十六进制数字需要4 * 16 = 64位。您可能打算编写二进制数1111111111111111。您可以使用以下代码将二进制文字字符串转换为整数:

Convert.ToInt16("1111111111111111", 2)

这将返回所需的数字(-1)。

要获得最大的Int64,您可以使用Int64.MaxValue0x7FFFFFFFFFFFFFFF),或者如果您真的想要无符号值,可以使用UInt64.MaxValue0xFFFFFFFFFFFFFFFF

答案 2 :(得分:0)

最大的Int64值为Int64.MaxValue。要以十六进制打印,请尝试:

Console.WriteLine(Int64.MaxValue.ToString("X"));