_tcstol 字符串到数字的转化

先看MSDN上对_tcstol的解释

1、在不同平台上的不同形式

TCHAR.H Routine _UNICODE & _MBCS Not Defined_MBCS Defined_UNICODE Defined
_tcstolstrtolstrtolwcstol
2、定义

long strtol( const char *nptr, char **endptr, intbase);

long wcstol( const wchar_t *nptr, wchar_t **endptr, intbase);

释义:将字符串类型根据不同的基转化数字形式。

其中:[in]   nptr 表示要进行扫描字符串指针

           [out] endptr  存储扫描后无法转化的剩余的字符串

          [base]  表示数字的基,取值为:2,8,10,16  对应的进制你懂的

这里我引用PHP中字符串匹配法则中的一个:贪婪匹配!!!也就是说,该函数会最大程序地匹配所有满足当前进制的字符,将其转化为对应的数字!!

例子:

(1).转二进制

#include"afx.h"
#include<stdio.h>
void main()
{
char c[5]="0131";
CString cs=_T(c);
LPTSTR pstr = NULL;
int last=_tcstol(c,pstr ,2);//2表示二进制
printf("%d\n",last);//使用十进制输出结果为1
printf("%s\n",pstr);//输出:31
 }
讲解:上面的字符串是0131a,进行最大匹配时,只能匹配到01,当遇到3时,就会停止了,因为3不是二进制数,所以匹配后二进制数值是:01,输出为十进制为1;

再来一个例子吧

2).转八进制

#include"afx.h"
#include<stdio.h>
void main()
{
char c[7]="010a,!";
CString cs=_T(c);
LPTSTR pstr = NULL;
int last=_tcstol(c,pstr ,8);//8表示8进制printf("%d\n",last);//使用十进制输出结果为8


printf("%s\n",pstr);//输出:a,!
 }
讲解:同样,最大匹配时遇到a就走不动了,因为a不是八进制数中一个,所以最终的八进制结果为010,对应十进制数为:8

参考文章:http://fpcfjf.blog.163.com/blog/static/55469793201015111136406/

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值