Java 将 FlashAir 十进制 16 位整数转换为 date/time 格式的示例?
Java example to convert FlashAir decimal 16-bit integer to date/time format?
使用他们的命令 cgi 从 FlashAir 2nd gen 检索文件列表,如下所述:FlashAir Get List CGI Command 我得到十进制 16 位整数来表示文件的日期和时间。
规范(在 link 发布的文章中)解释了如何理解检索到的值,但缺少 Java 示例。我尝试下载并检查 Android FlashAir 开发者网站 FlashAir Tutorial for Android - Downloading Content 中发布的示例代码,但它们只使用文件名,因此不执行任何转换。
只需提取指定的位即可。
假设您有 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
.
使用他们的命令 cgi 从 FlashAir 2nd gen 检索文件列表,如下所述:FlashAir Get List CGI Command 我得到十进制 16 位整数来表示文件的日期和时间。
规范(在 link 发布的文章中)解释了如何理解检索到的值,但缺少 Java 示例。我尝试下载并检查 Android FlashAir 开发者网站 FlashAir Tutorial for Android - Downloading Content 中发布的示例代码,但它们只使用文件名,因此不执行任何转换。
只需提取指定的位即可。
假设您有 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
.