更快的二进制到十进制字符串转换

时间:2014-03-22 06:26:22

标签: c# .net arrays boolean

是否有更快的方法将 Boolean 数组转换为除此之外的十进制字符串:

while (temp > 0)
{
    str = chars[(int)(temp % 10)] + str;
    temp /= 10;
}

2 个答案:

答案 0 :(得分:1)

您可以使用Convert.ToInt32()函数。

string binaryString = "10001011";
string decimalString = Convert.ToInt32(binaryString,2).ToString();

答案 1 :(得分:1)

我将假设您已将您的布尔数组命名为“arrBoolean”。这个答案从mmhasannn的答案中获得灵感,并且可能不一定更快。但它修复了他的答案,没有考虑你的布尔数组。

string binaryString = "";

for (int ii = 0; ii < arrBoolean.Length; ii++)
{
    if (arrBoolean[ii])
        binaryString += "1";
    else
        binaryString += "0";
}

string decimalString = Convert.ToInt32(binaryString, 2).ToString();

编辑:以下是关于Kr​​umia建议的更新答案。上述答案是为那些喜欢它的人保留的。

StringBuilder binaryBuilder = new StringBuilder();

for (int ii = 0; ii < arrBoolean.Length; ii++)
{
    if (arrBoolean[ii])
        binaryBuilder.Append("1");
    else
        binaryBuilder.Append("0");
}

string decimalString = Convert.ToInt32(binaryBuilder.ToString(), 2).ToString();

参考文献:

  1. http://www.dotnetperls.com/stringbuilder