我有16块可供支配。其中,4位是头,不能被触摸。这只剩下12位了。我想将日期和时间数据编码到它们中。这些实质上是通过LPWAN发送的日志。
显然,不可能将适当的泛型日期和时间编码到其中。因为unix时间戳使用32位,而像紧凑时间格式这样的项目使用5个字节。
假设我们不需要这一年,因为这些信息可以从其他地方获得。我们也可以说秒的时间分辨率不一定是超精确的,所以我们可以将秒分割成30秒的间隔。如果我们简单地对数据进行编码,那么:
4 bits month (0-11)
5 bits day (0-31)
5 bits hour (0-23)
6 bits minute (0-59)
1 bit second (0,30)
-----------------------------
21 bits21位比32位好得多。但它仍然不是12。我可以从分钟中减去一点(四舍五入到最近的偶数分钟),并去掉秒,但这还剩下19位。离12点还有很远。
只是想知道这是否可能,以及是否有人有任何想法。
发布于 2022-10-07 02:58:36
12位可以保存2^12 = 4096值,这对于一个任务来说是相当紧的。不确定在将日期时间压缩为4096个数字方面可以做多少工作。表示这些数据的空间太小。
有一些解决办法,没有一个能够实现你想要的,但也许你还是可以利用它:
an interval of N seconds的循环计数器,如果您有很少的设备,并且可以跟踪它们何时开始传输,这可能有效。例如,一颗卫星在XYZ上发射,它每30秒发送一次计数器,我们接收到计数器值的100,计算日期我们使用简单的数学XYZ + 30*100 seconds。发布于 2022-10-07 04:00:20
不是的。除非你愿意代表不到一天半的时间。你只需计算4096个30秒的间隔,就会发现这将持续34小时零8分钟.4096个两分钟的间隔仅仅是四倍,或者五天,16小时,32分钟.仍然是一年中的一小部分。
如果您可以确保连续日志条目之间的差异很小,那么您可以将其填入12位。您将需要一个特殊的条目来给出一个初始日期,也许您可以在连续条目之间的差异太大时插入这样的条目。
@oleksii还有其他一些好建议。
https://stackoverflow.com/questions/73978397
复制相似问题