ttoi 支持16进制(0xnumber),8进制(0number),10进制(number)

#include <math.h>
int ssCtoi(TCHAR c, int rad)
{
 if( (c >= TEXT('a') && c <= TEXT('f')) )
 {
  if(rad >= 16)
  {
   return c - TEXT('a') + 10;
  }
 }else if((c >= TEXT('A') && c <= TEXT('F')))
 {
  if(rad >= 16)
  {
   return c - TEXT('A') + 10;
  }
 }else if(c >= TEXT('8') && c <= TEXT('9'))
 {
  if(rad == 10 || rad == 16)
  {
   return c - TEXT('0');
  }
 }else if(c >= TEXT('0') && c <= TEXT('7'))
 {
  return c - TEXT('0');
 }

 return 0;
}
int ssTtoi(LPCTSTR lpTextValue)
{
 if(lpTextValue == NULL || _tcslen(lpTextValue) <= 0)
 {
  return 0;
 }

 LPCTSTR lpCurValuePointer = lpTextValue;

 int rad = 10;

 if(_tcslen(lpCurValuePointer) <= 0)
 {
  return 0;
 }

 if( lpCurValuePointer[0] == TEXT('0') && (lpCurValuePointer[1] == TEXT('x') || lpCurValuePointer[1] == TEXT('X')) )
 {
  lpCurValuePointer += 2;
  rad = 16;
 }else if(lpCurValuePointer[0] == TEXT('0'))
 {
  lpCurValuePointer++;
  rad = 8;
 }

 LPCTSTR lpValuePointerEnd = lpCurValuePointer;
 while(lpValuePointerEnd[0] != TEXT('/0'))
 {
  if( (lpValuePointerEnd[0] >= TEXT('a') && lpValuePointerEnd[0] <= TEXT('f'))
   || (lpValuePointerEnd[0] >= TEXT('A') && lpValuePointerEnd[0] <= TEXT('F')) )
  {
   if(rad != 16)
    break;
  }else if(lpValuePointerEnd[0] >= TEXT('8') && lpValuePointerEnd[0] <= TEXT('9'))
  {
   if(rad != 10 && rad != 16)
    break;
  }else if(lpValuePointerEnd[0] >= TEXT('0') && lpValuePointerEnd[0] <= TEXT('7'))
  {

  }else{
   break;
  }

  lpValuePointerEnd++;
 }
 if(lpValuePointerEnd <= lpCurValuePointer)
 {
  return 0;
 }

 int nRetValue = 0;

 int nEx = 0;

 while( --lpValuePointerEnd >= lpCurValuePointer )
 {
  nRetValue += (ssCtoi(*lpValuePointerEnd, rad) * pow((float)rad, nEx++));
 }

 return nRetValue;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值