首页投稿(暂停使用,暂停投稿)程序员

自己实现string转int

2018-01-25  本文已影响0人  AngerCow

前段时间被人问到有没有了解过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;
    }
上一篇下一篇

猜你喜欢

热点阅读