打印
[技术问答]

如何将串口发来的字符串表示的数字转换成数字

[复制链接]
277|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
就是串口通过printf函数格式化打印的字符型表示的数字,发送给单片机后那么该如何转换成普通的数字参与计算呢?

使用特权

评论回复
沙发
捉虫天师|  楼主 | 2023-12-25 21:45 | 只看该作者
#include <stdio.h>
#include <stdlib.h>

int main() {
    char receivedData[] = "123.45"; // 假设收到的字符型表示的浮点数是"123.45"
   
    // 使用stdlib.h中的atof函数将字符型浮点数转换为浮点数
    float convertedFloat = atof(receivedData);

    // 现在convertedFloat包含了浮点数123.45,你可以用它进行计算
    printf("Converted Float: %.2f\n", convertedFloat);

    return 0;
}

使用特权

评论回复
板凳
捉虫天师|  楼主 | 2023-12-25 21:46 | 只看该作者
如果不格式化输出,实际上的小数是这样的
Converted Float: 123.449997

使用特权

评论回复
地板
捉虫天师|  楼主 | 2023-12-25 21:46 | 只看该作者
如果是整数对象是这样操作
#include <stdio.h>
#include <stdlib.h>

int main() {
    char receivedData[] = "123"; // 假设收到的字符型表示的数字是"123"
   
    // 使用stdlib.h中的atoi函数将字符型数字转换为整数
    int convertedNumber = atoi(receivedData);

    // 现在convertedNumber包含了数字123,你可以用它进行计算
    printf("Converted Number: %d\n", convertedNumber);

    return 0;
}

使用特权

评论回复
5
捉虫天师|  楼主 | 2023-12-25 21:46 | 只看该作者

使用特权

评论回复
6
玛尼玛尼哄| | 2023-12-25 22:02 | 只看该作者
上述代码使用了atoi函数,它可以将字符串转换为整数。请注意,atoi函数在遇到非数字字符时会停止转换。这种方法对于简单的整数转换是有效的,但是如果你需要更复杂的处理,例如处理浮点数或错误检测,你可能需要考虑使用更为强大的函数,比如strtol。

在嵌入式系统中,通常会使用相应单片机提供的库函数,这可能与标准C库函数略有不同。你可以查看你使用的单片机的文档或标准库以获取更详细的信息。

使用特权

评论回复
7
玛尼玛尼哄| | 2023-12-25 22:02 | 只看该作者
与atoi类似,atof在遇到非数字字符时会停止转换。如果你需要更多的错误处理或者更灵活的控制,你可能需要考虑使用更为强大的转换函数,例如strtod。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

184

主题

3014

帖子

7

粉丝