首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

字符串与数目字间的转化

2012-09-25 
字符串与数字间的转化字符串转化为数字时,要用到语句:temptemp*10+(*str-0)请问:(*str-0)为什么要减

字符串与数字间的转化
字符串转化为数字时,要用到语句:temp=temp*10+(*str-'0');

请问:(*str-'0')为什么要减‘0’,不直接用*str?

[解决办法]
因为直接*str取得的是字符啊。。。减去'0'是通过ASCII码运算会把字符转化为数字
[解决办法]
数字0的ASCII码是从'0'(0x30)开始的。
[解决办法]

C/C++ code
//'0'的编码为48//'1'的编码为49//'2'的编码为50...//'9'的编码为57
[解决办法]
'0'。。 '9' 这些在asc码中都是(对应的数字 + 47),所以数字字符与'0'做差就可以直接得到对应的数字, 这也是常用的方法。
直接用*str, 到表达式中就会直接转化为asc码中的数字,如47 48, 那就出错了。


[解决办法]
字符数字与ASCII码之间的差值,就是数字的int型,你可以研究研究ASCII码表
[解决办法]
快速计算
"0" 的 ascii 值是 0x30 也就是48

所以 对于字符 "1" - "0" = "1" - 0x30 = "1" - 48 = 1 整形

热点排行