C# Int64在C中似乎太短了
我正在尝试将最大的int64值写入命令行。我尝试使用0x1111111,它是16个1,VisualStudio说是int64。我想那应该是int16。这里缺少什么?0x是十六进制而不是二进制文本的前缀。这意味着您的数字的二进制表示形式为0001000100010000000000000000000000000000000000000000000000000000000000000000000000001 不幸的是,C中没有二进制文字,因此您必须自己进行计算0x7FFFFFFFFFFFFFFFFFFF或使用Convert类,例如:C# Int64在C中似乎太短了,c#,visual-studio-2010,C#,Visual Studio 2010,我正在尝试将最大的int64值写入命令行。我尝试使用0x1111111,它是16个1,VisualStudio说是int64。我想那应该是int16。这里缺少什么?0x是十六进制而不是二进制文本的前缀。这意味着您的数字的二进制表示形式为0001000100010000000000000000000000000000000000000000000000000000000000000000000000001 不幸的是,C中没有二进制文字,因此您必须自己进行计算0x7FFFFFFFFFFFFFFFFF
short s = Convert.ToInt16("1111111111111111", 2); // "2" for binary
为了获得最大的Int64数字,您不需要执行任何自己的计算,因为该字段中已经提供了该数字:
Int64.MaxValue
最大的Int64值为。要以十六进制打印,请尝试:
Console.WriteLine(Int64.MaxValue.ToString("X"));
文字0x1111是一个十六进制数。每个十六进制数字都可以用四位来表示,因此16位十六进制数字需要4*16=64位。您可能打算写入二进制数1111111111。可以使用以下代码将二进制文字字符串转换为整数:
Convert.ToInt16("1111111111111111", 2)
这将返回所需的数字-1
要获取最大的Int64,可以使用Int64.MaxValue 0x7FFFFFFFFFFFFFFFFFFF,或者如果确实需要无符号值,可以使用UInt64.MaxValue 0xFFFFFFFFFFFFFF。该格式是十六进制数。每个数字是四位,而不是一位。您缺少0xFF…FF,并且您也可以忽略有符号/无符号或您也可以尝试Int64.MaxValue您忘记了两位的补码和有符号与无符号。Int64.MaxValue实际上是0x7FFFFFFFFFFFFFFF。