【问题标题】:Faster binary to decimal string conversion更快的二进制到十进制字符串转换
【发布时间】:2014-04-29 17:38:08
【问题描述】:

除了这个之外,还有没有更快的方法将 Boolean 数组转换为十进制字符串:

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

【问题讨论】:

  • 找出实现这些目标的各种方法并比较它们的速度,然后找出改进方法。在这种情况下,我会使用 StringBuilder 例如。

标签: c# .net arrays boolean


【解决方案1】:

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

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

【讨论】:

  • 我有一个大的布尔数组
【解决方案2】:

我将假设您已将布尔数组命名为“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();

编辑:以下是关于 Krumia 建议的更新答案。以上答案仅供喜欢的人使用。

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

【讨论】:

  • 我会使用StringBuilder,因为他说他有“一个 Boolean数组”。
  • @Krumia 抱歉,我花了这么长时间,但我刚刚注意到您的评论,并相应地更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 2016-07-25
  • 2010-11-17
  • 2011-07-11
  • 2012-10-05
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多