我正在尝试将最大的 int64 值写入命令行。我尝试使用0x1111111111111111
16 个,Visual Studio 说它是 int64。我会假设那将是int16。这里缺少什么?
问问题
206 次
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 回答