在使用FlashAir 2nd gen命令从FlashAir 2nd gen检索文件列表时,如下所述:FlashAir Get List CGI Command我得到了十进制的16位整数来表示文件的日期和时间。
该规范(在发布的链接中)解释了如何理解检索到的值,但是缺少Java示例。我尝试下载并检查FlashAir开发人员网站FlashAir Tutorial for Android - Downloading Content中发布的Android示例代码,但它们仅使用文件名,因此不执行任何转换。
最佳答案
只需提取指定的位。
假设您有一个short time
和short date
:
int seconds = (time & 31) * 2;
int minutes = (time >> 5) & 63;
int hours = (time >> 11) & 31;
int day = date & 31;
int month = (date >> 5) & 15;
int year = ((data >> 9) & 127) + 1980;
然后,就用它做一个日期时间。
尚不清楚原始年份是否可以为负数。我写的是这样,如果它们应该是负数(代表1980年之前的日期),就不能删除它们,只需删除
& 127
。