我是 C 的新手,有点想进入这个使用 C 进行嵌入式处理的世界。我需要将char*
整数和浮点数(仅 0.01 分辨率)转换并输出到具有 8 位接口的 LCD 屏幕。我一直在阅读一些帖子,我看到了所有这些转换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的文档。您可能应该测试int
.snprintf
由于您正在从事嵌入式编程,因此您应该意识到标准转换通常使用对任何处理器都非常繁重的划分。
由于整数是使用除以十来转换的,因此您可以使用乘以不变整数来实现除法。此方法应允许您在使用除法转换值中的单个数字所需的时间内转换大多数值。
对于浮点使用以下步骤:
这是一个需要两位小数的示例
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)