转自 http://blog.csdn.net/tommy_wxie/article/details/7480087

Linux内核中提供的一些字符串转换函数:

lib/vsprintf.c

1. unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)

2. unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base)

3. long simple_strtol(const char *cp, char **endp, unsigned int base)

4. long long simple_strtoll(const char *cp, char **endp, unsigned int base)

5. int strict_strtoul(const char *cp, unsigned int base, unsigned long *res)

6. int strict_strtol(const char *cp, unsigned int base, long *res)

7. int strict_strtoull(const char *cp, unsigned int base, unsigned long long *res)

8. int strict_strtoll(const char *cp, unsigned int base, long long *res)

9. int sprintf(char *buf, const char *fmt, ...)

10. int snprintf(char *buf, size_t size, const char *fmt, ...)

11. int sscanf(const char *buf, const char *fmt, ...)

1. unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)

2. unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base)

3. long simple_strtol(const char *cp, char **endp, unsigned int base)

4. long long simple_strtoll(const char *cp, char **endp, unsigned int base)

5. int strict_strtoul(const char *cp, unsigned int base, unsigned long *res)

6. int strict_strtol(const char *cp, unsigned int base, long *res)

7. int strict_strtoull(const char *cp, unsigned int base, unsigned long long *res)

8. int strict_strtoll(const char *cp, unsigned int base, long long *res)

9. int sprintf(char *buf, const char *fmt, ...)

10. int snprintf(char *buf, size_t size, const char *fmt, ...)

11. int sscanf(const char *buf, const char *fmt, ...)

unsigned long

long simple_strtoull(const char *cp, char **endp, unsigned int

base)

功能:将一个字符串转换成unsigend long long型数据。

返回:返回转换后数据。

参数:cp指向字符串的开始,endp指向分析的字符串末尾的位置,base为要用的基数(进制数),base为0表示通过cp来自动判断基数,函数自动可识别的基数:‘0x’表示16进制,‘0’表示8进制,其它都认定为10进制。函数可转换成数字的有效字符为:[0,f]。举例:cp

= “0x12str”,base = 0,则返回unsigned long long为18,*endp = “str”。 参数下同。

我的使用:

在做nand 的测试程序中遇到需要传递参数的问题,但是一般argv传递的都是ascii码,本来我调用时传的是nand test 1 2,其中1代表mode1模式,2代表测试次数,但是我打印出argv[2],arcv[3]的值分别是49 50,这明明是ascii码,本来想直接给参数减48然后来用的,后来发现了这么个强大的函数,调用如下:

int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])

simple_strtoul(argv[2], NULL, 0),这样就可以把argv转换成十进制了,在别处还看到了16进制的调用:start = (ulong *)simple_strtoul(argv[1], NULL, 16);

static ssize_t led_brightness_store(struct device *dev,

struct device_attribute *attr, const char *buf, size_t size)

{

struct led_classdev *led_cdev = dev_get_drvdata(dev);

ssize_t ret = -EINVAL;

char *after;

unsigned long state = simple_strtoul(buf, &after, 10);

size_t count = after - buf;

if (isspace(*after))

count++;

if (count == size) {

ret = count;

if (state == LED_OFF)

led_trigger_remove(led_cdev);

led_set_brightness(led_cdev, state);

}

return ret;

}

static ssize_t led_brightness_store(struct device *dev,

struct device_attribute *attr, const char *buf, size_t size)

{

struct led_classdev *led_cdev = dev_get_drvdata(dev);

ssize_t ret = -EINVAL;

char *after;

unsigned long state = simple_strtoul(buf, &after, 10);

size_t count = after - buf;

if (isspace(*after))

count++;

if (count == size) {

ret = count;

if (state == LED_OFF)

led_trigger_remove(led_cdev);

led_set_brightness(led_cdev, state);

}

return ret;

}

unsigned long simple_strtoul(const char *cp, char **endp, unsigned int

base)

功能:将一个字符串转换成unsigend long型数据。

返回:返回转换后数据。

int

strict_strtoul(const char *cp, unsigned int base, unsigned long

*res)

功能:将一个字符串转换成unsigend long型。

返回:转换成功返回0,否则返回负。res指向转换后的unsigned

long数据。

说明:该函数对cp指向的字符串严格要求,cp指向的字符串必须为真正的unsigned

long形式的字符串。字符串必须以“0x”、“0”、[0,f]开始,中间全部为有效的字符[0,f],否则返回为负。它会处理字符串最后的“\n”字符。下同

long long simple_strtoll(const char *cp, char **endp, unsigned int

base)

功能:将一个字符串转换成sigend long long型。

返回:返回转换后数据。

int

strict_strtol(const char *cp, unsigned int base, long *res)

功能:将一个字符串转换sigend

long型。

返回:转换成功返回0,否则返回负。res指向转换后的signed long数据。

int

strict_strtoull(const char *cp, unsigned int base, unsigned long long

*res)

功能:将一个字符串转换unsigend long long型。

返回:转换成功返回0,否则返回负。res指向转换后的unsigned

long long数据。

int strict_strtoll(const char *cp, unsigned int base, long

long *res)

功能:将一个字符串转换sigend long long型。

返回:转换成功返回0,否则返回负。res指向转换后的signed

long long数据。

int sprintf(char *buf, const char *fmt,

...)

功能:格式化输出字符串,类似于printf,只是用字符串buf作为输出对象。

返回:返回写入buf字符串的字符个数。

int

snprintf(char *buf, size_t size, const char *fmt,

...)

功能:格式化输出字符串,类似于printf,只是用字符串buf作为输出对象。其中size为buf的大小(包括‘\0’字符)。

返回:返回写入buf字符串的字符个数。

int

sscanf(const char *buf, const char *fmt,

...)

功能:格式化输入字符串,类似于scanf,只是用字符串buf作为输入对象。

返回:返回读取buf字符串的字符个数。

lib/kasprintf

char *kasprintf(gfp_t gfp, const char *fmt, ...)

char *kasprintf(gfp_t gfp, const char *fmt, ...)

char *kasprintf(gfp_t gfp, const char *fmt, ...)

char

*kasprintf(gfp_t gfp, const char *fmt,

...)

功能:格式化输出字符串到一段且gfp分配的内存中。

返回:返回指向该内容的字符串指针。

linux下通过字符串调用函数,linux中字符串转换函数 simple_strtoul相关推荐

  1. oracle中转换函数,Oracle中的转换函数

    Oracle中的转换函数有三个,分别为to_char(),to_date(),to_number() 1.to_char()的用法 格式化当前的日期时间 select sysdate,to_char( ...

  2. linux下c语言调用mysql,Linux下C语言连接MySQL

    首先保证安装: 1:安装MySQL:sudo apt-get install mysql-server mysql-client 2:安装MySQL开发包:sudo apt-get install l ...

  3. linux下c语言调用mysql,Linux下C语言操作MYSQL总结

    Linux下C语言操作MYSQL总结 发布时间:2006-12-17 00:40:00来源:红联作者:anciens 下文的用到的数据库表: 数据库中存在表table, 有name(varchar类型 ...

  4. linux下c代码调用.so,Linux下C程序调用.so(动态链)的一个例子

    /********************************************** * 使用Linux下C++的动态链接库.So文件 * void *pdlHandle; * pdlHan ...

  5. mysql常用转换函数_MySQL中常用转换函数介绍

    Cast函数:CONVERT函数. 用法:CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name). ...

  6. ​Linux下C如何调用PCI Lib函数

    Linux下C如何调用PCI Lib函数 在Linux下,可以通过"setpci"和"setpci"命令来访问PCI设备的配置空间,那么能否用程序来访问PCI ...

  7. 在linux下,如何在C语言中使用正则表达式

    http://hi.baidu.com/d_south/blog/item/9d22a34b1fc2bcf483025c53.html 在linux下,如何在C语言中使用正则表达式(整理) 2008- ...

  8. Linux下使用Java调用Hikvision设备网络SDK使用指南

    1 简介  由于在开发过程中,本来以为抓图项目会部署在Windows服务器上,但随着项目的进行发现项目需要部署在Linux系统,甚至是国产化平台银河麒麟上,但在部署时发现在国产化平台部署时出现缺包的问 ...

  9. linux下QT工程调用opencv、libtorch,并用cmake编译,及其遇到的一些问题的解决方法

    linux下QT工程调用opencv.libtorch,并用cmake编译: 文章目录 一.新建QT工程 二.编写CMakeLists.txt文件 三.各个文件的内容如下: 1.mainwindow. ...

  10. 如何在LINUX下利用QT调用第三方软件WPS

    如何在LINUX下利用QT调用第三方软件WPS 前言: 在开发过程中,客户需要一个在线查看功能,能够打开WORD.PDF的文件,并且显示在屏幕上,需要调用第三方软件WPS来实现这个功能. 技术点: 1 ...

最新文章

  1. 坑爹的微软官方文档:SQL无人值守安装
  2. 第24讲 | 比特币专题(一)历史与货币
  3. 3D空间的指定起点和终点的抛体运动
  4. SAP Commerce Cloud Spartacus UI 的购物车 Cart 功能
  5. Ubuntu truffle框架安装
  6. 数字图像识别笔记(第三章-灰度变换与空间滤波)
  7. 在HTML中取得请求中的参数
  8. Mac音量微调技巧:如何一点一点的加音量或者减呢?
  9. 后台填充_单元格噩梦终于有救?500多行隔行填充,我就两步!
  10. 指针(小破站-王道训练营P18的例题)
  11. 今日头条小程序开发功能
  12. excel表格打印每页都有表头_Excel打印时如何实现每一页纸上都有表头?
  13. C-kermit安装方法
  14. 华为机试—字符串首字母转换成大写
  15. java18_【Java】Java_18 方法
  16. 80页4万字政务综合服务平台建设项目方案书(完整版)
  17. 统计一TXT文档中单词出现频率,输出频率最高的10个单词
  18. 机器学习中特征选择概述
  19. python实现12306全自动抢票
  20. 数据结构与算法 | 希尔排序

热门文章

  1. python身份证求出生年月日,年龄,性别
  2. 浅谈TCP/IP协议栈(三)路由器简介
  3. Word小技巧-快速取消自动编号
  4. 正当我想学习鸢尾花分类,于是准备使用jupyter,结果遇到了一堆的问题-没有输出、浏览器无法自动跳出来、终端自动关闭.......
  5. vscode个性化常用插件推荐
  6. Java和SpringBoot类加载机制
  7. 盘点:2016年度WiFi行业十大事件
  8. 汇编语言(第三版)王爽著(实验十一)编写子程序
  9. android如何读取sim卡联系人信息,Android上如何获取手机和sim卡的联系人信息
  10. php微信公众号调用扫一扫,微信公众号中h5页面扫一扫实现