通过算法理解,把字符串转换成整形数字

13 篇文章 1 订阅
7 篇文章 0 订阅

字符串转数字

先理解ASCII码规则

计算机中的字符包括数值、英文字母、标点符号、制表符号及其他符号。每一个字符都用一个特定的二进制代码来表示,这就是字符的编码。目前,字符编码采用的是美国信息交换标准代码,即ASCII 码。它是用一个字节的低七位来表示一个字符的编码, 2^7 =128 ,最高位是 0 (代表正),所以,用 ASCII 码可表示 128 个字符)。有了这个我们就不怕我们输入的字符,计算机不懂了。于是只要我们自己在程序中输入一个字符(例如:‘a’)计算机在编译过程中自动将它转换成97的二进制码这就是为什么说字符本质上也是整型了,因为字符变量只是告诉计算机,我这个数据只占一个字节,也就是说我超不出128这个数去。而int则告诉我这个数可能很大,有65534那么大呢。
数组里,左为高位,右为低位;

对算法步骤分析的理解

55在这里插入图片描述
初始:n = 0只是循环外定义的n的初值,在进入实现(字符串—>数字)的while循环里后,n的值随着 n = 10 * n + s[ i ] – ‘0’来变化,且while循环依次读取s[i]里的数据;

第一步:

每次循环都只读取一位字符,从高位‘1’读起,数字1是由49-48得出来的,字符‘0’的ASCII码是48,字符‘1’的ASCII码是49,那么数字1就得出规律:字符‘1’-‘0’= 49 - 48 = 1,while循环里的是 n = 10 * 0 +‘1’-‘0’= 0 + 49 - 48 = 1;

第二步

读取字符‘2’的时候,n变成了1,while里的循环为“n = 10*1 + ‘2’ – ‘0’”得出10 + 2 = 12;

第三步

读取字符‘3’的时候,n变成了12,while循环里变成“n = 10*12 + ‘3’ – ‘0’”得出120 + 3 = 123;

图解:

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扳手的海角

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值