0

我正在尝试将最大的 int64 值写入命令行。我尝试使用0x111111111111111116 个,Visual Studio 说它是 int64。我会假设那将是int16。这里缺少什么?

4

3 回答 3

6

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

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

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

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

Int64.MaxValue 
于 2013-03-11T23:13:45.080 回答
3

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

Convert.ToInt16("1111111111111111", 2)

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

要获得最大的值Int64,您可以使用Int64.MaxValue( 0x7FFFFFFFFFFFFFFF),或者如果您真的想要无符号值,您可以使用UInt64.MaxValue( 0xFFFFFFFFFFFFFFFF)。

于 2013-03-11T23:17:14.457 回答
0

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

Console.WriteLine(Int64.MaxValue.ToString("X"));
于 2013-03-11T23:16:08.323 回答