CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

请教小问题(转换)

楼主ymly(简单想法)2005-01-01 14:32:36 在 C/C++ / C语言 提问

int   htoi(char   s[])  
  {int   i,   n=0;  
    for   (i=0;s[i]!='\0';i++)  
    {  
      if   (s[i]>='0'   &&   s[i]<='9')  
          n=n*16+s[i]-'0';  
          if   (s[i]>='a'   &&   s[i]<='+')  
                n=n*16+s[i]-'a'+10;  
        }  
      return(n);  
  }  
   
  请教,本人知道(=n*16+s[i]-'0'或n=n*16+s[i]-'a'+10;不明白)是实现本题x转换十进制,但是我不懂这种运算,  
      为什么减字符0,为什么减a+10;  
      请教各位   ,可不可以写详细点!  
  在这就多谢谢  
  祝你新年愉快  
                   
  问题点数:0、回复次数:3Top

1 楼yinjintao(thinking in money)回复于 2005-01-01 14:55:11 得分 0

16进制转换到10进制  
  16进制表示用   '0'-'9'和'a'-'f'表示每一位的数字  
  比如0xaf,用10进制表示就是10   *16+15  
  在一般的字符编码中,数字字符是连续的,所以减去'0'就可以得到相应的数值  
  而一般'a'不在'9'的后面,'a'代表数字10,所以要减去'a'以后再加上10得到对应的数值  
   
  这些你看一下ASCII编码就明白为什么了Top

2 楼xiaoxiaols()回复于 2005-01-03 12:14:23 得分 0

这与ASCALL   码的问题,看一下就明白了Top

3 楼chenee543216(奋斗成就男人!)回复于 2005-01-03 12:40:47 得分 0

梨叔很负责的说:了解ASCAII   码很重要!Top

相关问题

  • 大小写转换
  • 小写金额转换
  • 金额大小写转换???
  • 大小写转换问题
  • 小写转换成大写
  • 小写转换成大写
  • 数字大小写转换
  • 大小写金额转换
  • 转换函数小问题
  • 转换的小问题

关键词

得分解答快速导航

  • 帖主:ymly

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo