前段时间被人问到有没有了解过c#里一些内部方法的实现机制,虽然大概知道,但是没有去深入了解。又被问到怎么自己实现一个string转int。在这里给大家讲一下我的实现思路。
首先我们要先把字符拆分成单个char类型,
char[] chars = str.ToCharArray();
然后我们再用数学计算得到最终结果。
数字在字符中的索引与我们们实际数字位数是相反的,所以我们计算时先算最高位。
int multiple = (int)Math.Pow(10, str.Length);
再依次递减倍数,所以数的总和就是我们要求得的字符的int值。
for (int i=0; i < chars.Length; i++)
{
multiple /= 10;
endInt += (chars[i]-48) * multiple;//这里得到的结果是ASCII,所以按表要减48
Debug.Log("endInt:" + endInt);
}
看下我们的结果
--------------
image.png
这个功能比较简单,工程就不上传了,最后给上我的代码。可以自己测试一下吧。
虽然是很基础的东西,但是很多强大的技术都是由基础变化而来的。
private string str = "123456789";
int StringToInt(string str) {
if (str == string.Empty || str == null)
{
return 0;
}
char[] chars = str.ToCharArray();
int endInt = 0;
if (str.Length > 1)
{
int multiple = (int)Math.Pow(10, str.Length);
for (int i=0; i < chars.Length; i++)
{
multiple /= 10;
endInt += (chars[i]-48) * multiple;//这里得到的结果是ASCII,所以按表要减48
Debug.Log("endInt:" + endInt);
}
}
return endInt;
}
网友评论