自己实现string转int

前段时间被人问到有没有了解过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;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,768评论 0 33
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,878评论 0 38
  • 1.String 类的Api文档如下 public final class String extends Obje...
    JC_Hou阅读 1,898评论 0 6
  • 每次听到浑身细胞都会颤抖,我的青春十首歌: 1、《遇见》孙燕姿,是电影《向左走,向右走》的主题曲,是由易家扬作词,...
    爱逗子阅读 895评论 4 8
  • 闯进北京是非常匆忙的一件事情,只背了一个书包,拿着在学校小超市买的两袋面包就坐上了高铁。 关于北京的记忆非常模糊,...
    鸢尾fleurdelis阅读 174评论 0 2