【嵌入式C语言】常用工具函数之数字字符串与十进制数字转换函数

简介: 【嵌入式C语言】常用工具函数之数字字符串与十进制数字转换函数

背景:在嵌入式开发中,有时候我们在协议中发送或者收到的数字都是十进制数字,而我们在人机交互时,需用通过字符串类型来显示该十进制数字,这就经常需要对十进制数字和数字字符串进行相互转换。

说明:下面给出的4个工具函数,在使用时可以直接调用。以下工具函数中,说明了函数的功能,函数参数以及函数的返回值。并且下面的函数原型和函数实现都是我在嵌入式开发中经常使用的,而不是所有场景通用的(比如嵌入式中常用u8类型,即unsigned char,一般不会出现负数)。

1.计算10的n次方

1. /*************************************
2. *函数名称:get_10_n
3. *函数功能:输入一个数字n,计算10的n次方
4. *函数参数:大于等于0的数字
5. *函数返回:10的n次方结果
6. *************************************/
7. int get_10_n(int n)
8. {
9.  int i = 0;
10.   int ret = 10;
11. 
12.   if (n == 0)
13.   {
14.     return 1;
15.   }
16. 
17.   for (i = 0; i < (n - 1); i++)
18.   {
19.     ret = 10 * ret;
20.   }
21. 
22.   return ret;
23. }

2.判断一个十进制数字是几位数(测试用例 00014 10004 11982)

1. /********************************************
2. *函数名称:get_dec_digit
3. *函数功能:输入一个十进制数num,计算num是几位数
4. *函数参数:十进制正整数
5. *函数返回:正整数的位数
6. ********************************************/
7. int get_dec_digit(int num)
8. {
9.  int ret = 0;
10. 
11.   while ((num / 10) != 0)
12.   {
13.     num = num / 10;
14.     ret++;
15.   }
16. 
17.   return (ret + 1);
18. }

3.数字字符串转十进制

1. /********************************************
2. *函数名称:str_to_dec
3. *函数功能:把一个数字字符串转为十进制正整数
4. *函数参数:一个数字字符串
5. *函数返回:十进制正整数
6. ********************************************/
7. int str_to_dec(unsigned char* str)
8. {
9.  int i = 0;
10.   int len = 0;
11.   int ret = 0;
12. 
13.   if (str == NULL)
14.   {
15.     return 0;
16.   }
17. 
18.   len = strlen((const char*)str);
19. 
20.   for (i = 0; i < len; i++)
21.   {
22.     ret = ret + (str[i] - '0') * get_10_n(len - 1 - i);
23.   }
24. 
25.   return ret;
26. }

4.数字转数字字符串 (要在主调函数释放内存)

1. /********************************************************************************
2. *函数名称:dec_to_str
3. *函数功能:十进制数字转数字字符串
4. *函数参数:unsigned char** buf 用于返回字符串内存的地址,该内存需要在主调函数释放
5. *         int num 十进制数字
6. *函数返回:void
7. ********************************************************************************/
8. void dec_to_str(unsigned char** buf, int num)
9. {
10.   unsigned char* buf_temp = NULL;
11. 
12.   if (num < 0)
13.   {
14.     *buf = buf_temp;
15.     return;
16.   }
17.   //被调函数分配内存,一定要在主调函数释放,防止内存泄漏
18.   buf_temp = (unsigned char*)malloc(get_dec_digit(num) + 1);
19.   if (buf_temp == NULL)
20.   {
21.     *buf = buf_temp;
22.     return;
23.   }
24.   sprintf((char *)buf_temp, "%d", num);
25.   buf_temp[get_dec_digit(num)] = '\0';
26. 
27.   *buf = buf_temp;
28. }


相关文章
|
1月前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
66 10
|
1月前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
52 9
|
1月前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
41 8
|
1月前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
50 6
|
1月前
|
存储 C语言
【C语言】输入/输出函数详解
在C语言中,输入/输出操作是通过标准库函数来实现的。这些函数分为两类:标准输入输出函数和文件输入输出函数。
266 6
|
1月前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
64 6
|
1月前
|
存储 网络协议 算法
【C语言】进制转换无难事:二进制、十进制、八进制与十六进制的全解析与实例
进制转换是计算机编程中常见的操作。在C语言中,了解如何在不同进制之间转换数据对于处理和显示数据非常重要。本文将详细介绍如何在二进制、十进制、八进制和十六进制之间进行转换。
41 5
|
1月前
|
C语言 开发者
【C语言】断言函数 -《深入解析C语言调试利器 !》
断言(assert)是一种调试工具,用于在程序运行时检查某些条件是否成立。如果条件不成立,断言会触发错误,并通常会终止程序的执行。断言有助于在开发和测试阶段捕捉逻辑错误。
42 5
|
2月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
52 1
|
C语言
BCD码转十进制C语言实现
#include #include #define uchar unsigned char uchar BCD_Decimal(uchar bcd) ; int main(void) { uchar ch = 0x20 ; uchar dec = BCD_Dec...
1899 0