【发布时间】:2015-10-21 03:35:22
【问题描述】:
这是一个时髦的程序。出于某种原因,它在二进制输入类似于 101 时起作用。然后它不适用于 1000。这有点奇怪。有人可以解释一下吗?
class Program
{
static void Main()
{
string binary = "xxx";
double decimalValue = 0;
Console.WriteLine("Enter in a binary number:");
binary = Console.ReadLine();
for (int i = 0; i < binary.Length; i++)
{
Console.WriteLine("Length is: {0}", binary.Length);
if (binary[i] == 49) //Look at that
decimalValue = decimalValue + Math.Pow(2, i);
}
Console.WriteLine("The decimal equivalent value is {0}", decimalValue);
Console.ReadLine();
}
}
它的核心当然是 if (binary[i] == 49)
我只是为了自学一些 C#。有人能告诉我除了 49 以外的右侧要放什么,这是“1”的 ASCII 数字。如果我输入“1”,我会收到一条错误消息,提示您无法将字符串与字符进行比较。
任何帮助将不胜感激。我不想使用预先转换为二进制的方法,因为这应该是一个可教的时刻。
【问题讨论】:
-
提示:试试
Math.Pow(2, binary.Length - i - 1);) -
一个字符文字用单引号括起来:
'1'. -
如果你不能比较一个字符串和一个字符,你为什么不尝试将一个转换成另一个呢?您还可以尝试将字符串解析(提示)为整数,以查看它是 1 还是 0。
-
“1”适用于 101,但不适用于 1000。不过,它比 49 的神秘值要好。