Linux内核中的atoi,itoa等函数
对于普通应用程序,可以通过包含头文件stdlib.h和stdio.h,string.h等,然后调用需要的itoa(),atoi()等函数,
但是对于Linux内核来说,无法使用那些C库中的函数。
对此Linux内核里有了相应的实现:
对于atoi()用simple_strtol() ,simple_strtoul()等函数替代;
对于itoa(),用snprintf()。
其他相关函数,自己去看/lib/vsprintf.c。
比如:
simple_strtoul,simple_strtol,simple_strtoull,strict_strtoul,strict_strtol,strict_strtoull,strict_strtoll,vsnprintf,vscnprintf
另外,对于常见的字符相关处理函数,都在/lib/string.c中:
strnicmp,strcasecmp,strncasecmp,strcpy,strncpy,strlcpy,strcat,strncat,strlcat,strcmp,strncmp,strchr,strrchr,strnchr,strstrip,strlen,strnlen,strspn,strcspn,strpbrk,strsep,sysfs_streq
以及内存相关操作函数:
memset,memcpy,memmove,memcmp,memscan,strstr,memchr
源码:
/*
const char *ptr 目标字符串,需要转换的字符串
char **end 退出目标字符串的位置,一般填充NULL
int base //转换字符串的基数
返回值:字符串表示的整数
*/
unsigned long long int strtoull(const char *ptr, char **end, int base)
{
unsigned long long ret = 0;
if (base > 36)
goto out;
while (*ptr) {
int digit;
if (*ptr >= '0' && *ptr <= '9' && *ptr < '0' + base)
digit = *ptr - '0';
else if (*ptr >= 'A' && *ptr < 'A' + base - 10)
digit = *ptr - 'A' + 10;
else if (*ptr >= 'a' && *ptr < 'a' + base - 10)
digit = *ptr - 'a' + 10;
else
break;
ret *= base;
ret += digit;
ptr++;
}
out:
if (end)
*end = (char *)ptr;
return ret;
}
举例:
int index = simple_strtol("12345", NULL, 10);
//转换后的整数为 12345
Linux内核中的atoi,itoa等函数相关推荐
- itoa 头文件 linux,【整理】Linux内核中的atoi,itoa等函数
对于普通应用程序,可以通过包含头文件stdlib.h和stdio.h,string.h等,然后调用需要的itoa(),atoi()等函数, 但是对于Linux内核来说,无法使用那些C库中的函数. 对此 ...
- linux 打印函数宏,linux内核中的嵌入式汇编宏函数
在看linux内核代码时,常会遇到诸如:static inline _syscall0(int,fork)这样的函数.经查阅资料,发现该函数是嵌入式汇编宏函数. linux内核提供了7个非常有用的宏定 ...
- linux中min函数用法,linux内核中的min、max函数
这些天为了整理一下前段时间看ldd3时所学的驱动知识,所以就去看了看usb驱动.不看不知道,一看吓一跳,里面有很多语法我发现用的太好了,不像我们平时那样写代码.里面写的代码真是太好了.然而要理解到里面 ...
- linux内核中的文件描述符(四)--fd的分配--get_unused_fd
linux内核中的文件描述符(四)--fd的分配--get_unused_fd Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123( ...
- 如何使用Linux内核中没有被导出的变量或函数
更多文章目录:点击这里 GitHub地址:https://github.com/ljrkernel Linux 内核为了减少命名空间的污染,并做到正确的信息隐藏,内核提供了管理内核符号可见性的方法.不 ...
- linux内核的外部接口函数,linux内核中GPIO的使用(二)--标准接口函数
在linux内核中,有一些基本模块可以使用标准的接口函数来操作,比如GPIO.interrupt.clock,所谓的标准接口函数是指一些与硬件平台无关的.linux下做驱动通用的函数, 常用的有: g ...
- linux内核中的hook函数详解,linux内核中的hook函数详解
在编写linux内核中的网络模块时,用到了钩子函数也就是hook函数.现在来看看linux是如何实现hook函数的. 先介绍一个结构体: struct nf_hook_ops,这个结构体是实现钩子函数 ...
- linux hook 任意内核函数,linux内核中的hook函数详解
在编写linux内核中的网络模块时,用到了钩子函数也就是hook函数.现在来看看linux是如何实现hook函数的. 先介绍一个结构体: struct nf_hook_ops,这个结构体是实现钩子函数 ...
- Linux内核中常见内存分配函数
1. 原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分 ...
- Linux内核中内存分配函数
1.原理说明 Linux内核 中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示.四级页表分别为 ...
最新文章
- 英伟达开源自动驾驶AI算法,升级芯片性能7倍于Xavier
- 具有absolute、relative、fixed的div设置宽度和高度的效果
- 【MATLAB】基本绘图 ( 线条设定 | 线条设定组合 )
- 【AI不惑境】模型压缩中知识蒸馏技术原理及其发展现状和展望
- 网站数据库中“密码加密”方法思考
- 你可能不需要 jQuery!使用原生 JavaScript 进行开发
- linux运行c程序a. out,无法运行已编译的文件 – bash:./ a.out:权限被拒绝. (我试过chmod)...
- Bootstrap 模态对话框
- 速读《精通比特币》基本术语
- shell export path_Shell的变量声明
- Service Unavailable出现原因及解决方法
- 基于springboot网上书城系统
- Google Earth Engine ——Landsat 8 影像集合Collection详细介绍
- [从头读历史] 第249节 易经
- 判断和循环——实战收尾篇1(二分法、抛硬币等)
- Origin画图笔记
- 如何分类保存下载京东商城无官方水印商品主图
- 2022年美国大学生数学建模(MCM/ICM)C题:量化交易策略
- 硬盘质保、保修期网上查询
- NYOJ-506 洗澡