【发布时间】:2014-04-29 17:38:08
【问题描述】:
除了这个之外,还有没有更快的方法将 Boolean 数组转换为十进制字符串:
while (temp > 0)
{
str = chars[(int)(temp % 10)] + str;
temp /= 10;
}
【问题讨论】:
-
找出实现这些目标的各种方法并比较它们的速度,然后找出改进方法。在这种情况下,我会使用
StringBuilder例如。
除了这个之外,还有没有更快的方法将 Boolean 数组转换为十进制字符串:
while (temp > 0)
{
str = chars[(int)(temp % 10)] + str;
temp /= 10;
}
【问题讨论】:
StringBuilder 例如。
您可以使用 Convert.ToInt32() 函数。
string binaryString = "10001011";
string decimalString = Convert.ToInt32(binaryString,2).ToString();
【讨论】:
我将假设您已将布尔数组命名为“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();
参考资料:
【讨论】:
StringBuilder,因为他说他有“一个大 Boolean数组”。