使用微控制器 (PIC18F4580),我需要收集数据并将其发送到 SD 卡以供以后分析。它收集的数据的值介于 0 到 1023 或 0x0 到 0x3FF 之间。
所以我需要做的是将 1023 转换为以 10 为基数的 ASCII 值字符串(0x31、0x30、0x32、0x33...)。
我的问题是,我能想到的将数字分开的唯一方法需要大量除法。
char temp[4];
temp[0] = 1023 % 10;
temp[1] = (1023 % 100) / 10;
temp[2] = (1023 % 1000) / 100;
temp[3] = (1023 % 10000) / 1000;
使用此方法,查找 n 位十进制数的 ASCII 值需要进行 2n-1 次除法。有没有一种方法会更快?
最终目标是在 SD 卡上生成一个 .csv 文件,该文件可以快速插入任何笔记本电脑以查看 Excel 中的数据图表。
显而易见的解决方案是not将数据转换为 ASCII,但以二进制格式存储。这样您只需担心数据的字节顺序。如果执行后续分析的系统比您的嵌入式目标强大得多,那么让其处理转换和字节顺序是有意义的。
另一方面,与将数据传输到 SD 卡所需的时间相比,/ 和 % 的执行时间可能微不足道;因此,请确保您正在优化正确的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)