今天看kafka,有一个参数选项中有: 'S'   seq=strtoull(optarg,NULL,10);

                    do_seq=1;

之后查找了下 strtoull 函数的功能,了解如下:

-----------------------------------

from:http://zengwu3915.blog.163.com/blog/static/27834897201262562912597/

名字:

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(npstr, &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. js 字符串转化成数字

    方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有 ...

  2. js 字符串转化成数字:(实例:用正则检测大于0的正数,最多保留4位小数)

    来源:http://www.cnblogs.com/hwx0807/archive/2011/06/28/2092021.html 实例: function BindSubmitEvent() { / ...

  3. strtol / strtoll / strtoul / strtoull

    function long int strtol (const char* str, char** endptr, int base); —— Convert string to long integ ...

  4. 通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母

    通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母 例如 我的中国心    ==> wdzgx 我的中国心ya ==> wdzgxya woai我的中国 ==> w ...

  5. c/c++ 数字转成字符串, 字符串转成数字

    c/c++ 数字转成字符串, 字符串转成数字 ------转帖 数字转字符串: 用C++的streanstream: #include <sstream> #Include <str ...

  6. [C#]将千分位字符串转换成数字

    关键代码: /// <summary> /// 将千分位字符串转换成数字 /// 说明:将诸如"–111,222,333的千分位"转换成-111222333数字 /// ...

  7. js将字符串转化成函数:eval(logOutCallbackFun+"()");

    js将字符串转化成函数:eval(logOutCallbackFun+"()");

  8. JavaScript进阶(四)js字符串转换成数字的三种方法

    js字符串转换成数字的三种方法 在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b. ...

  9. js字符串转换成数字与数字转换成字符串的实现方法

    转载:点击查看地址 js字符串转换成数字 将字符串转换成数字,得用到parseInt函数.parseInt(string) : 函数从string的开始解析,返回一个整数. 举例:parseInt(' ...

随机推荐

  1. Day_6作业_模拟人生

    as #!/usr/bin/env python # encoding: utf-8 class wisdom(object): def __init__(self,n,g): self.n = n ...

  2. 精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第二章:选择你的网络分析灵魂伴侣的最佳策略 在Web Analytics 2.0的新世界秩序中,您必须跳出"单一真理来 ...

  3. 对接微信红包时:CA证书出错,请登录微信支付商户平台下载证书

    今天在对接微信支付的微信红包发放时,出现““CA证书出错,请登录微信支付商户平台下载证书”的错误,特此记录一下: 如果你也在对接微信红包,并且你也在这个页面上下载了demo,再就是你也参照了里面的文档 ...

  4. dedecms /include/filter.inc.php Local Variable Overriding

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 filter.inc.php这个文件在系统配置文件之后,里面有forea ...

  5. phpMyadmin /scripts/setup.php Execute Arbitrary PHP Code Via unserialize Vul Object Injection PMASA-2010-4

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 对这个漏洞简单的概括如下 . "/scripts/setup.php&q ...

  6. cantor三分集

    值得一提的是,第一次听说cantor三分集是在数字电路课上,然而数电是我最不喜欢的课程之一...... 分形大都具有自相似.自仿射性质,所以cantor三分集用递归再合适不过了,本来不想用matlab ...

  7. XmlReader读取XML

    StringBuilder output = new StringBuilder(); String xmlString = @"<bookstore> <book gen ...

  8. git实习笔记

    一.查找文件目录 二.添加上传文件 三.提交文件,描述信息 四.登录

  9. Raspberry Pi 3 --- identify the version of linux kernal file

    open it

  10. python 模拟登陆,请求包含cookie信息

    需求: 1.通过GET方法,访问URL地址一,传入cookie参数 2.根据地址一返回的uuid,通过POST方法,传入cooki参数 实现思路: 1.理解http的GET和POST差别 (网上有很多 ...