对于普通应用程序,可以通过包含头文件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等函数相关推荐

  1. itoa 头文件 linux,【整理】Linux内核中的atoi,itoa等函数

    对于普通应用程序,可以通过包含头文件stdlib.h和stdio.h,string.h等,然后调用需要的itoa(),atoi()等函数, 但是对于Linux内核来说,无法使用那些C库中的函数. 对此 ...

  2. linux 打印函数宏,linux内核中的嵌入式汇编宏函数

    在看linux内核代码时,常会遇到诸如:static inline _syscall0(int,fork)这样的函数.经查阅资料,发现该函数是嵌入式汇编宏函数. linux内核提供了7个非常有用的宏定 ...

  3. linux中min函数用法,linux内核中的min、max函数

    这些天为了整理一下前段时间看ldd3时所学的驱动知识,所以就去看了看usb驱动.不看不知道,一看吓一跳,里面有很多语法我发现用的太好了,不像我们平时那样写代码.里面写的代码真是太好了.然而要理解到里面 ...

  4. linux内核中的文件描述符(四)--fd的分配--get_unused_fd

    linux内核中的文件描述符(四)--fd的分配--get_unused_fd Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123( ...

  5. 如何使用Linux内核中没有被导出的变量或函数

    更多文章目录:点击这里 GitHub地址:https://github.com/ljrkernel Linux 内核为了减少命名空间的污染,并做到正确的信息隐藏,内核提供了管理内核符号可见性的方法.不 ...

  6. linux内核的外部接口函数,linux内核中GPIO的使用(二)--标准接口函数

    在linux内核中,有一些基本模块可以使用标准的接口函数来操作,比如GPIO.interrupt.clock,所谓的标准接口函数是指一些与硬件平台无关的.linux下做驱动通用的函数, 常用的有: g ...

  7. linux内核中的hook函数详解,linux内核中的hook函数详解

    在编写linux内核中的网络模块时,用到了钩子函数也就是hook函数.现在来看看linux是如何实现hook函数的. 先介绍一个结构体: struct nf_hook_ops,这个结构体是实现钩子函数 ...

  8. linux hook 任意内核函数,linux内核中的hook函数详解

    在编写linux内核中的网络模块时,用到了钩子函数也就是hook函数.现在来看看linux是如何实现hook函数的. 先介绍一个结构体: struct nf_hook_ops,这个结构体是实现钩子函数 ...

  9. Linux内核中常见内存分配函数

    1.      原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分 ...

  10. Linux内核中内存分配函数

    1.原理说明 Linux内核 中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示.四级页表分别为 ...

最新文章

  1. 英伟达开源自动驾驶AI算法,升级芯片性能7倍于Xavier
  2. 具有absolute、relative、fixed的div设置宽度和高度的效果
  3. 【MATLAB】基本绘图 ( 线条设定 | 线条设定组合 )
  4. 【AI不惑境】模型压缩中知识蒸馏技术原理及其发展现状和展望
  5. 网站数据库中“密码加密”方法思考
  6. 你可能不需要 jQuery!使用原生 JavaScript 进行开发
  7. linux运行c程序a. out,无法运行已编译的文件 – bash:./ a.out:权限被拒绝. (我试过chmod)...
  8. Bootstrap 模态对话框
  9. 速读《精通比特币》基本术语
  10. shell export path_Shell的变量声明
  11. Service Unavailable出现原因及解决方法
  12. 基于springboot网上书城系统
  13. Google Earth Engine ——Landsat 8 影像集合Collection详细介绍
  14. [从头读历史] 第249节 易经
  15. 判断和循环——实战收尾篇1(二分法、抛硬币等)
  16. Origin画图笔记
  17. 如何分类保存下载京东商城无官方水印商品主图
  18. 2022年美国大学生数学建模(MCM/ICM)C题:量化交易策略
  19. 硬盘质保、保修期网上查询
  20. NYOJ-506 洗澡

热门文章

  1. 设计模式学习02-观察者模式
  2. 对应版本_DNF:韩服新增天域之母等13件特殊史诗,老版本装备全部直升100级
  3. Ambari——大数据平台的搭建利器之进阶篇[配置spark]
  4. python集成包地址 Anaconda 一键安装拥有所有包
  5. Microsoft Exchange 2010 and Outlook 2010
  6. Java 异常类层次结构
  7. VBOX下安装RHEL5.4增强工具失败的解决办法
  8. 去中心化交易所如雨后春笋,EOS交易所崭露头角
  9. PCIE的DMA和PIO介绍
  10. mysql用shell脚本链接数据库进行操作