linux中字符串转换函数 simple_strtoul【转】
转自:http://blog.csdn.net/tommy_wxie/article/details/7480087
Linux内核中提供的一些字符串转换函数: lib/vsprintf.c [html] view plain copy print? 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”。 参数下同。 [cpp] view plain copy print? 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 [cpp] view plaincopyprint? char *kasprintf(gfp_t gfp, const char *fmt, ...) [cpp] view plain copy print? char *kasprintf(gfp_t gfp, const char *fmt, ...) char *kasprintf(gfp_t gfp, const char *fmt, ...) 功能:格式化输出字符串到一段且gfp分配的内存中。 返回:返回指向该内容的字符串指针。
【作者】sky
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类