我是C的新手,并且用C来进入这个嵌入式处理世界。我需要转换为char*
并将输出整数和浮点数(仅0.01分辨率)输出到具有8位接口的LCD屏幕。 我一直在阅读一些post,我看到所有这些将int
和float
转换为char*
好主意但我不确定它们中发生了什么。
有人可以为我的两个查询提供一种方法并做一点解释吗?
它实际上取决于标准库,并且在某些嵌入式系统中,库部分实现,甚至不存在。 使用完全标准的C99实现,您可能会做类似的事情
char buf[40]; int i; double x; // compute i & x, then make a string from them with:: snprintf(buf, sizeof(buf), "i=%2d x=%.2f", i, x);
然后你可以将这个buf
发送到你的LCD端口,或者将其strdup
以供以后使用。 (如果你使用strdup
你需要free
结果)。
有关详细信息,请阅读snprintf的文档。 您可能应该测试snprintf
的return int
值。
由于您正在进行嵌入式编程,因此您应该意识到标准转换通常会利用对任何处理器都非常重要的分区。
由于整数是使用十分之一转换的,因此您可以使用不变整数乘法来实现除法。 此方法应允许您使用除法转换值中转换单个数字所需的时间内的大多数值。
对于浮点使用以下步骤:
这是一个需要两位小数的例子
3758.3125 375831.25 (multiply by 10^2) 375831.75 (add 0.5) 375831 (convert to integer) "375831" (convert to string) "3758.31" (insert decimal point => final result)
一个更困难的案例
-0.0625 0.0625 (keep sign) 6.25 (multiply by 10^2) 6.75 (add 0.5) 6 (convert to integer) "6" (convert to string) "006 (insert ascii 0 as required) "-006" (insert minus sign) "-0.06" (insert decimal point => final result)
以上就是c/c++开发分享将浮点数和整数转换为char *相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/519648.html