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