我正在尝试将最大的int64值写入命令行。我尝试使用0x1111111111111111
这是16个,而visual studio说这是int64。我原以为这将是int16。这里缺少什么?
答案 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.MaxValue
(0x7FFFFFFFFFFFFFFF
),或者如果您真的想要无符号值,可以使用UInt64.MaxValue
(0xFFFFFFFFFFFFFFFF
)
答案 2 :(得分:0)
最大的Int64值为Int64.MaxValue。要以十六进制打印,请尝试:
Console.WriteLine(Int64.MaxValue.ToString("X"));