number=number*10+str[i]-'0';
number=number*10+str-'0';为什么要减去 ‘0’,
求助 这是把字符转换成数字的方法,'0' - '0' = 0,'9' - '0' = 9,这样操作前,必须要确定字符必须是数字 '0' ~ '9'。 jackz007 发表于 2019-10-26 21:43
这是把字符转换成数字的方法,'0' - '0' = 0,'9' - '0' = 9,这样操作前,必须要确定字符必须是数字 ...
number=0;
for (i=0;hexad!='\0';i++){
if (hexad>='0'&&hexad<='9')
number=number*16+hexad-'0';
if (hexad>='A'&&hexad<='F')
number=number*16+hexad-'A'+10;
if (hexad>='a'&&hexad<='f')
number=number*16+hexad-'a'+10;
}
printf("Number=%ld\n",number); jackz007 发表于 2019-10-26 21:43
这是把字符转换成数字的方法,'0' - '0' = 0,'9' - '0' = 9,这样操作前,必须要确定字符必须是数字 ...
我有点不明白你的意思。我知道这是转换字符的方法。为什么一顿操作之后。还要减去一个'0';
我试着去掉。然后结果变的不一样。感觉好奇怪 fabvy12 发表于 2019-10-26 21:55
number=0;
for (i=0;hexad!='\0';i++){
if (hexad>='0'&&hexad='A'&&hexad='a'&&hexad
然后这个转换 -‘A'+0 -’a'+10也不是很懂 fabvy12 发表于 2019-10-26 21:57
然后这个转换 -‘A'+0 -’a'+10也不是很懂
有点明白你的意思了 jackz007 发表于 2019-10-26 21:43
这是把字符转换成数字的方法,'0' - '0' = 0,'9' - '0' = 9,这样操作前,必须要确定字符必须是数字 ...
有点明白你的意思了 本帖最后由 jackz007 于 2019-10-26 22:16 编辑
十六进制数 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中,A 是 10,F 是 15。所以,如果字符是大写字母,那么,- 'A' + 10 就会得到这个字符对应的十进制数值。例如,对于字符 'F','F' - 'A' + 10 = 15,正好就是我们希望的数值。当然,这么计算的前提显然是,要计算的字符必须为 'A' ~ 'F',否则,没有意义。 谢谢!
页:
[1]