C 库函数strtol原型为:
long int strtol(const char *str, char **endptr, int base) ;
其运行过程为:
把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型),并将该长整数转换为十进制数返回,如果没有符合的结果,则返回一个0值;
base 必须介于 2 和 36(包含)之间,或者是特殊值 0;
str中不符合base的部分存储于*endptr中
base的筛选条件:
当base为2时,合法字符为‘0’,‘1’;
base为8时,合法字符为‘0’,‘1’,……‘7’;
base为10时,合法字符为‘0’,‘1’,……‘9’;
base 为16时,合法字符为‘0’,‘1’,……‘9’,‘a’,……‘f’;
base为24时,合法字符为‘0’,……‘9’,‘a’,……‘n’,
base为36时,合法字符为‘0’,……‘9’,‘a’,……‘z’;等等。
其中,不区分大小写,比如,‘A’和‘a’会都会被转化为10。
- #include
- using namespace std;
- int main() {
- char buffer[20]="112233abc11";
- char *endptr=nullptr;
- cout << "初始字符串为:" << buffer << "\n" << endl;
- long result = strtol(buffer, &endptr, 2);
- cout << "符合的结果并转换为十进制数result: "<< result << "\t, 余下的字符串endptr: " << endptr << endl;
- return 0;
- }