我是一名C#新手,学习如何使用数组。我编写了一个小型控制台应用程序,可将二进制数转换为十进制数;然而,我使用的sytax似乎导致应用程序 - 在某些时候 - 使用unicode指定整数而不是整数本身的真值,因此1变为49,而0变为48.将字符串转换为整型数组C#
如何以不同的方式编写应用程序以避免这种情况?由于
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sandbox
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Key in binary number and press Enter to calculate decimal equivalent");
string inputString = Console.ReadLine();
////This is supposed to change the user input into character array - possible issue here
char[] digitalState = inputString.ToArray();
int exponent = 0;
int numberBase = 2;
int digitIndex = inputString.Length - 1;
int decimalValue = 0;
int intermediateValue = 0;
//Calculates the decimal value of each binary digit by raising two to the power of the position of the digit. The result is then multiplied by the binary digit (i.e. 1 or 0, the "digitalState") to determine whether the result should be accumulated into the final result for the binary number as a whole ("decimalValue").
while (digitIndex > 0 || digitIndex == 0)
{
intermediateValue = (int)Math.Pow(numberBase, exponent) * digitalState[digitIndex]; //The calculation here gives the wrong result, possibly because of the unicode designation vs. true value issue
decimalValue = decimalValue + intermediateValue;
digitIndex--;
exponent++;
}
Console.WriteLine("The decimal equivalent of {0} is {1}", inputString, intermediateValue);
Console.ReadLine();
}
}
}
我知道它并没有真正回答你的问题,但所有的代码可以减少到'Convert.ToInt32(inputString,2)' - 参见[这个问题](http://stackoverflow.com/questions/9149728/convert-binary-string-int-integer)。 –
不用担心。我正在努力解决数组和循环结构的语法问题。因此代码非常笨重。你的方法仍然值得了解 - 谢谢。 – Zengetsu
具有讽刺意味的是,这个问题正确地引用了Unicode,而几个答案错误地引用了ASCII。 –