gpt4 book ai didi

c - 如何有效地在年历上存储任务信息

转载 作者:太空狗 更新时间:2023-10-29 15:08:54 25 4
gpt4 key购买 nike

我有一个嵌入式系统(没有任何操作系统的 MCU),最终用户应该能够定义一年的系统级别(范围:0-100)。例如(时间 x 天矩阵):

       | 1st Jan | 2nd Jan | 3rd Jan | .. | 31 Dec |
00:30 | 40 (%) | 40 | 45 | .. | 50 |
01:48 | 48 | 47 | 55 | .. | 33 |
02:26 | 64 | 64 | 60 | .. | 68 |
.. | .. | .. | .. | .. | .. |
22:15 | 79 | 82 | 89 | .. | 100 |
23:37 | 100 | 100 | 97 | .. | 100 |

我想的是将数据存储为:time [in minutes], sysLevel 所以上表应该是这样的:

 typedef struct{
uint16_t minute; //scale: 0 - 1440 min
uint8_t level; //scale 0 - 100 (%)
}timeLevel_t; //3 byte

然后将每一天存储为

timeLevel_t firstJan[24] = { .. }; //it stores level changes, the array length doesn't have to be 24
timeLevel_t secJan[17] = { .. };
timeLevel_t thirdJan[20] = { .. };
...

(我将从 CSV 文件中获取数据,现在在这个问题上考虑它可能超出了主题)。

在最坏的情况下,系统希望有一个每小时的任务定义,因此 24 小时的 timeLevel_t(3 字节)定义将是每天 72 字节的数据,那么 365 天的数据将是 26280 字节的数据。

您能否建议一种内存效率更高的算法来存储日历年的信息(该程序每年都会更新它,以便考虑 2 月 29 日)?

此外?制作一个二维数组在一维存储日期信息,在另一维存储 timeLevel_t 会更好吗?

最佳答案

您必须存储额外的信息,例如 #days/month,或者假设每个信息为 31 并浪费几个字节。

这完全取决于您的痛点。您可以打包更多字节以不浪费任何比特,但代价是代码复杂性和计算时间。

如果存储非常宝贵,您可以将所有内容存储在一个巨大的一维数组中,并将额外的位用于其他内容。例如,第 11 位可以表示“下一天”,第 12 位可以表示“下个月”,然后您可以抓取数组并找到一年中的任何一天。而且您还有另外 4 位用于各种恶作剧。

请详细描述问题。

关于c - 如何有效地在年历上存储任务信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29685200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com