我发布了一个新线程,因为上一个线程非常混乱,并且这个想法也被修改了。我在很多地方更改了程序,没有损失效率(甚至获得一点),现在我有一个简单的整数数组,就像以前一样,不需要分隔符。
我知道这类问题已经回答过很多次了。尽管我找到了很多可能的答案,但它们仍然没有解决我的问题,即实现将整数数组转换为单个字符串的最快方法。
那好吧,
int[] Result = new int[] { 636, 1000234545, 1353678530, 987001 }
我应该得到:
636000234545353678530987001
请注意,我只取了每个元素的最后 9 位数字。这是 Honza Brestan 的更正版本:
StringBuilder sb = new StringBuilder();
for (var i = 0; i < xC; i++)
{
tempint = Result[i];
if (tempint > 999999999)
sb.Append((Result[i]).ToString().Substring(1, 9));
else
sb.Append((Result[i]).ToString());
}
return sb.ToString();
我的,老的,更正了:
//Base – a string array of integers saved as strings {“000”, “001”, … , “999” }
string[] arr = new string[3 * limit];
int x; // temp value
for (int i = 0; i < limit; i++)
{
x = Result[i];
if (x > 999999)
{
arr [3 * i + 2] = Base [x % 1000];
arr [3 * i + 1] = Base [x / 1000 % 1000];
arr [3 * i] = Base [x / 1000000 % 1000];
}
else
{
if (x < 1000)
{
arr [3 * i + 2] = Base [x % 1000];
}
else
{
arr [3 * i] = Base [x / 1000 % 1000];
arr [3 * i + 1] = Base [x % 1000];
}
}
}
return string.Join(null, arr);
现在速度差异:Honza:689 ms 我的:331 ms
任何想法如何提高速度?也许使用汇编程序?