_tcstol 字符串到数字的转化
2017-03-21 07:11
344 查看
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中字符串匹配法则中的一个:贪婪匹配!!!也就是说,该函数会最大程序地匹配所有满足当前进制的字符,将其转化为对应的数字!!
例子:
[cpp] view
plain copy
(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;
再来一个例子吧
[cpp] view
plain copy
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/
先看MSDN上对_tcstol的解释
1、在不同平台上的不同形式TCHAR.H Routine | _UNICODE & _MBCS Not Defined | _MBCS Defined | _UNICODE Defined |
_tcstol | strtol | strtol | wcstol |
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中字符串匹配法则中的一个:贪婪匹配!!!也就是说,该函数会最大程序地匹配所有满足当前进制的字符,将其转化为对应的数字!!
例子:
[cpp] view
plain copy
(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;
再来一个例子吧
[cpp] view
plain copy
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/
相关文章推荐
- _tcstol 字符串到数字的转化
- js 字符串转化成数字
- C语言将数字转化为字符串
- JavaScript中数字与字符串相互转化
- 编写一个函数将字符串中的数字字符转化为相应的整数
- 将数字转化为字符串
- c#如实现将一个数字转化为其他进制字符串输出
- Java实现数字转化成字符串左边自动补零方法(流水号)
- 将一个int类型的数字转化为字符串,并判断有无重复字符串(长度应大于等于2)有返回1,无返回0
- c的数字与字符串的转化
- c++中字符串与数字之间的相互转化
- 将一个十进制数字转化为x进制/将x进制的字符串转换成10进制
- C51 数字和字符串互相转化
- 最短路_邻接表_字符串转化为数字的模板
- strtol,strtoll,strtoul, strtoull字符串转化成数字
- lua数字转化为字符串(千,万,亿)
- js字符串转化为数字 详解(转载)
- C++将十进制数字转化为X 进制的字符串
- javascript字符串数字转化函数parseInt的奇怪现象
- C语言中将字符串转化为数字的函数总结