strtoull函数的使用,及相关信息汇总

kafka中涉及到序列化,有一个参数是在发送消息实体前边以一个序列号打头,

seq = strtoull((prdcfgval+1), NULL, 10);

do_seq = 1;


其中(prdcfgval+1)为读取配置中该对应参数设置的值,strtoull函数是要把一个字符串转换成(unsigned)? long long int型的数,第三个参数表示以什么进制,,这儿是十进制;关于strtoull函数的详细解释如下:

strtol,strtoll,strtoul, strtoull字符串转化成数字

名字:

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);                                          ?为啥我man strtoull 没有unsigned前缀

说明,第一个参数 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会设置相关值

 

时间: 2024-10-26 10:00:52

strtoull函数的使用,及相关信息汇总的相关文章

php.ini设置相关信息汇总

display_errors 本条指令控制PHP是否输出errors.notices.warnings.一般在开发模式下打开,在产品模式下关闭.有点坑的是,php.ini中,文件开头就又关于display_errors指令的介绍,但是,在后面才是设置.我第一次就是在开头处设置了,但是在文件后面因为还存在display_errors真正设置的地方,导致后面的设置覆盖了前面的设置,从而使我的设置一直无法生效.坑!坑!坑!在爬坑过程中用到的几个方法:1. ini_get()2. php --ini  

ORACLE ERP相关整理汇总

摘自:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763104687270e54f7633f8883492c81c40884642c101a39feed7c63525483846b6777ac4f5aeefb3765377523a09bbfd20c82e5866d72c8713b2d5cd5104c840eafba11658337902bb6e947f0bb802594dac5d2af0b008c044521d3ae9c5b700

DB2错误信息汇总

DB2错误信息(按sqlcode排序) sqlcode sqlstate 说明 000 00000 SQL语句成功完成 01xxx SQL语句成功完成,但是有警告 +012 01545 未限定的列名被解释为一个有相互关系的引用 +098 01568 动态SQL语句用分号结束 +100 02000 没有找到满足SQL语句的行 +110 01561 用DATA CAPTURE定义的表的更新操作不能发送到原来的子系统 +111 01590 为2型索引设置了SUBPAGES语句 +117 01525 要

[转帖]xserver相关知识汇总

xserver相关知识汇总 https://blog.csdn.net/QTVLC/article/details/81739984 本文主要是从以下几个方面介绍xorg-xserver 相关的知识 1.linux系统图形界面框架 2.xserver 和x client启动过程 3.图形2d,3d加速原理简介 4.xserver主分支代码解析. 5.xserver,xclient协议简介 6.一个基于Xlib的简单例子解析 7.radeon驱动初始化代码解析. 1.linux图形界面框架 参考至

Khronos 在GDC上的信息汇总:Vulkan,OpenXR,WebGL,glTF

Khronos 在GDC上的信息汇总:Vulkan,OpenXR,WebGL,glTF 游戏开发者大会,旧金山– The Khronos? Group, 一个由领先硬件和软件公司组成的组织,在游戏开发者大会(GDC)上发布了主要API更新和新工作组成立的消息.在本周,我们将有一系列Khronos赞助的活动,The Khronos Group在加速跨平台API的开发,并为开发者们带来了最新的硬件功能.Khronos 一如既往地致力于搭建在整个业界广泛使用的开放标准的合作社群,最近在GDC发布的AP

Stat(),Lstat(),Fstat() 获取文件/目录的相关信息

stat 的使用 Linux有个命令,ls -l,效果如下: 这个命令能显示文件的类型.操作权限.硬链接数量.属主.所属组.大小.修改时间.文件名.它是怎么获得这些信息的呢,请看下面的讲解. stat 的基本使用 stat:返回一个与此命 需要包含的头文件: <sys/types.h>,<sys/stat.h>,<unistd.h> 函数原型: int stat(const char *path, struct stat *buf);      int fstat(in

【Android】Scrollview 相关问题汇总

去除Scrollview 滑动边界渐变颜色 去掉滚动条,并将在滑动时,边界不会变成灰白 <horizontalscrollview android:overScrollMode="never" android:background="@null" android:scrollbars="none" android:fadingEdge="none" /> scrollview初始化定位滚动条的位置在需要的地方调用m

linux 系统性能调优 相关命令汇总

linux 系统性能调优 相关命令汇总: 1. ps:查看系统中当前有哪些进程在运行 常用命令有ps aux  | grep  -i  mysql http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html 2. top:动态显示各个程序对cpu,内存的占用,以及负载的情况 http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html 3. io的总体负载,进程的io

PHP获取手机相关信息

该PHP操作类实现获取手机号手机头信息,取UA,取得手机类型,判断是否是opera,判断是否是m3gate,取得HA,取得手机IP 代码如下: <?php /** * @desc 手机操作类 获取手机相关信息 * @since */class mobile { /** * 函数名称: getPhoneNumber * 函数功能: 取手机号 * 输入参数: none * 函数返回值: 成功返回号码,失败返回false * 其它说明: 说明 */ public function getPhoneNu