linux下通过字符串调用函数,linux中字符串转换函数 simple_strtoul
转自 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相关推荐
- oracle中转换函数,Oracle中的转换函数
Oracle中的转换函数有三个,分别为to_char(),to_date(),to_number() 1.to_char()的用法 格式化当前的日期时间 select sysdate,to_char( ...
- linux下c语言调用mysql,Linux下C语言连接MySQL
首先保证安装: 1:安装MySQL:sudo apt-get install mysql-server mysql-client 2:安装MySQL开发包:sudo apt-get install l ...
- linux下c语言调用mysql,Linux下C语言操作MYSQL总结
Linux下C语言操作MYSQL总结 发布时间:2006-12-17 00:40:00来源:红联作者:anciens 下文的用到的数据库表: 数据库中存在表table, 有name(varchar类型 ...
- linux下c代码调用.so,Linux下C程序调用.so(动态链)的一个例子
/********************************************** * 使用Linux下C++的动态链接库.So文件 * void *pdlHandle; * pdlHan ...
- mysql常用转换函数_MySQL中常用转换函数介绍
Cast函数:CONVERT函数. 用法:CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name). ...
- Linux下C如何调用PCI Lib函数
Linux下C如何调用PCI Lib函数 在Linux下,可以通过"setpci"和"setpci"命令来访问PCI设备的配置空间,那么能否用程序来访问PCI ...
- 在linux下,如何在C语言中使用正则表达式
http://hi.baidu.com/d_south/blog/item/9d22a34b1fc2bcf483025c53.html 在linux下,如何在C语言中使用正则表达式(整理) 2008- ...
- Linux下使用Java调用Hikvision设备网络SDK使用指南
1 简介 由于在开发过程中,本来以为抓图项目会部署在Windows服务器上,但随着项目的进行发现项目需要部署在Linux系统,甚至是国产化平台银河麒麟上,但在部署时发现在国产化平台部署时出现缺包的问 ...
- linux下QT工程调用opencv、libtorch,并用cmake编译,及其遇到的一些问题的解决方法
linux下QT工程调用opencv.libtorch,并用cmake编译: 文章目录 一.新建QT工程 二.编写CMakeLists.txt文件 三.各个文件的内容如下: 1.mainwindow. ...
- 如何在LINUX下利用QT调用第三方软件WPS
如何在LINUX下利用QT调用第三方软件WPS 前言: 在开发过程中,客户需要一个在线查看功能,能够打开WORD.PDF的文件,并且显示在屏幕上,需要调用第三方软件WPS来实现这个功能. 技术点: 1 ...
最新文章
- 坑爹的微软官方文档:SQL无人值守安装
- 第24讲 | 比特币专题(一)历史与货币
- 3D空间的指定起点和终点的抛体运动
- SAP Commerce Cloud Spartacus UI 的购物车 Cart 功能
- Ubuntu truffle框架安装
- 数字图像识别笔记(第三章-灰度变换与空间滤波)
- 在HTML中取得请求中的参数
- Mac音量微调技巧:如何一点一点的加音量或者减呢?
- 后台填充_单元格噩梦终于有救?500多行隔行填充,我就两步!
- 指针(小破站-王道训练营P18的例题)
- 今日头条小程序开发功能
- excel表格打印每页都有表头_Excel打印时如何实现每一页纸上都有表头?
- C-kermit安装方法
- 华为机试—字符串首字母转换成大写
- java18_【Java】Java_18 方法
- 80页4万字政务综合服务平台建设项目方案书(完整版)
- 统计一TXT文档中单词出现频率,输出频率最高的10个单词
- 机器学习中特征选择概述
- python实现12306全自动抢票
- 数据结构与算法 | 希尔排序
热门文章
- python身份证求出生年月日,年龄,性别
- 浅谈TCP/IP协议栈(三)路由器简介
- Word小技巧-快速取消自动编号
- 正当我想学习鸢尾花分类,于是准备使用jupyter,结果遇到了一堆的问题-没有输出、浏览器无法自动跳出来、终端自动关闭.......
- vscode个性化常用插件推荐
- Java和SpringBoot类加载机制
- 盘点:2016年度WiFi行业十大事件
- 汇编语言(第三版)王爽著(实验十一)编写子程序
- android如何读取sim卡联系人信息,Android上如何获取手机和sim卡的联系人信息
- php微信公众号调用扫一扫,微信公众号中h5页面扫一扫实现