名字:

strtol, strtoll, strtoul, strtoull

convert a string to a (signed, unsigned ) long integer string

声明:

#include<stdlib.h> ( 这个是C标准库,与linux无关。这套函数是通用的。)

long int strtol(const char *nptr, char **endptr, int base);
long long int strtoll(const char *nptr, char **endptr, int base);

unsigned long int strtoul(const char *nptr, char **endptr, int base);
unsigned long long int strtoull(const char *nptr, char **endptr, int base);

说明,第一个参数 nptr是要转化的字符串。第三个参数base说明nptr的进制。base 取值范围 0,2-36

这几个函数会忽略nptr前面的空格( ' ', '\t', '\n' '\f', '\v' '\r' ,由isspace判定为真的字符)

while (*nptr && isspace ( *nptr ) ) ++ nptr;

然后遇到非合法字符结束;

base = 2; 合法字符为0, 1

base = 3; 合法字符为0,1, 2

...

base = 11; 合法字符为0,1,...,9,a(A)

...

base = 36;合法字符为0, 1, ...,9,a(A),...,z(Z)。

字符 a-z,是忽略大小写的,混着来也行,例如 strtol("aA", NULL, 11)依然能得到正确的结果。

函数的第二个参数endptr可以为空,如果不为空,则 endptr 保存函数结束前的那个非合法字符的地址。

如果没有合法字符,则 *endptr = nptr,函数返回0.

例如:

1.

char *endptr;

char nptr[]="123abc";

int ret = strtol(nptr, &endptr, 10 );

由于10进制里没有“数字”a,所以扫描到a,结束。

这样 ret = 123;

endptr = &nptr[3]; ( printf("%s", endptr);将得到字符串 abc )

2.

char nptr[]=" \n\t    abc";

int ret = strtol(nptr, &endptr, 10 );

由于函数会忽略nptr前面的空格(' ', '\n'...),所以,从字符a开始扫描,但是遇见的“第一个”即是不合法字符。

所以函数结束。 ret=0; endptr = nptr;

以下的讨论,会认为 nptr 前面没有空格,

即执行过类似于while (*nptr  &&isspace ( *nptr ) ) ++ nptr;

如果base 为0.则分3种情况:

如果nptr 以0x(零x)开头,则把nptr当成16进制处理。

如果npstr以0(零)开头,则把nptr当成8进制处理。

否则,把nptr当成10进制。

对于函数执行错误,如传了一个非合法base,则errno会设置相关值

strtol,strtoll,strtoul, strtoull字符串转化成数字相关推荐

  1. strtol strtoll strtoul strtoull应用

    在项目开发时,字符串跟整形的转换是普遍需求的一个功能,在c/c++中常用的几个函数包括 strtol strtoll strtoul strtoull. 目前我们的项目里面进行转换的时候都是直接调用, ...

  2. c/c++函数 -strtol strtoll strtoul strtoull 使用注意项cc

    说明 在项目开发时,字符串跟整形的转换是普遍需求的一个功能,在c/c++中常用的几个函数包括 strtol strtoll strtoul strtoull. 目前我们的项目里面进行转换的时候都是直接 ...

  3. c/c++函数 -strtol strtoll strtoul strtoull解读

    在项目开发时,字符串跟整形的转换是普遍需求的一个功能,在c/c++中常用的几个函数包括strtol strtoll strtoul strtoull.  目前我们的项目里面进行转换的时候都是直接调用, ...

  4. js 字符串转化成数字

     js 字符串转化成数字 的 三种方法主要有 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换 ...

  5. JAVA学习:将字符串转成数字

    今天在面试时,面试官问的第一个问题就是如何将字符串转化成数字 我心想太简单了:用int 的封装类型对象Integer 中有一个parseInt()方法可将传入参数的字符串转换成数字 如下图 Strin ...

  6. js 转化为实体符_js字符串转换成数字与数字转换成字符串的实现方法

    本篇文章主要是对js字符串转换成数字与数字转换成字符串的实现方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 js字符串转换成数字 将字符串转换成数字,得用到parseInt函数. ...

  7. 字符串转化为数字的函数

    C++字符串转化为数字的库函数 1.atoi 功 能:把一字符串转换为整数 用 法:int atoi(const char *nptr); 详细解释:atoi是英文array to integer 的 ...

  8. C将十六进制数字字符串转成数字

    1.将十六进制数字字符串转成数字 long   lTemp   =   strtol("0xa10b", NULL, 16); 这样的话,就将0xa10b这个十六制形式的字符串转为 ...

  9. java字符串转公式_java把字符串转化成公式计算的示例

    java把字符串转化成公式计算的示例 如下所示: static ScriptEngine jse = new ScriptEngineManager().getEngineByName("J ...

最新文章

  1. response.end
  2. Alpine Linux 3.9.1 发布,面向安全的轻量级 Linux 发行版
  3. sizeof 是关键字不是函数!使用sizeof需要注意?
  4. CFI Flash, SPI Flash, Nand Flash,Nor Flash的区别和联系
  5. CodeForces - 78E Evacuation(最大流)
  6. 傅立叶变换学习(一)初步认识傅立叶变换
  7. IllegalArgumentException:@Body parameters cannot be used with form or multi-part encoding
  8. LeetCode(集合)队列和栈的相互实现 golang
  9. “约见”面试官系列之常见面试题之第六十六篇之事件委托的原理和实现(建议收藏)
  10. 通俗易懂!视觉slam第十一部分——线性系统和卡尔曼滤波
  11. MySQL内连接和外连接
  12. java retry怎么用_java retry使用详解
  13. matlab读取excel里的数据并用imagesc画图
  14. ES6躬行记(3)——解构
  15. 简单git用ssh方式下载代码
  16. 宋宝华: 文件读写(BIO)波澜壮阔的一生
  17. 六子棋 java_六子棋——人工智能系统的设计与研究_Java
  18. Android aab打包
  19. MSP430 G2553 单片机 口袋板 日历 时钟 闹钟 万年历 电子时钟 秒表显示
  20. 豪杰超级解霸 V8.3 11月18日发布

热门文章

  1. Cognos问题解决
  2. vscode 护眼主题 界面UI配色 语法配色
  3. 知乎上的48条神回复
  4. 获取svg和svg内容的方法
  5. 如何安装linux服务器
  6. ROS踩坑之.msg文件未能转化为.h文件
  7. 对于line-height的一些理解
  8. 00.奇特的一生--序言(笔记)
  9. 7-12 哥尼斯堡的“七桥问题” (25 分)(并查集)
  10. linux+swap分区规则_linux关于swap分区的划分规则