我是C的新手,并且用C来进入这个嵌入式处理世界。我需要转换为char*
并将整数和浮点数(仅0.01分辨率)输出到LCD屏幕一个8位接口。我一直在阅读一些帖子,我看到了将int
和float
转换为char*
的所有好主意,但我不确定它们中发生了什么。
有人可以为我的两个查询和一点解释提供方法吗?
答案 0 :(得分:4)
它实际上取决于标准库,并且在某些嵌入式系统中,库部分实现,甚至不存在。使用完全standard 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的文档以获取详细信息。您可能应该测试int
的返回snprintf
值。
答案 1 :(得分:3)
由于您正在从事嵌入式编程工作,因此您应该意识到标准转换通常会利用对任何处理器都非常重要的分区。
由于整数是使用除以十进制转换的,因此您可以使用不变整数乘法来实现除法。此方法应该允许您在使用除法转换值中的单个数字所花费的时间内转换大多数值。
对于浮点数,请使用以下步骤:
这是一个需要两位小数的例子
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)