将 4 个十六进制值反向工程为 DateTime
Reverse engineer 4 hex values to DateTime
尝试将 4 个十六进制值从我的供暖系统逆向工程为日期时间戳
我知道:
5F:A2:30:77 --> 2019.03-10 - 10:08
6D:A2:30:77 --> 2019.03-10 - 10:21
我的第一个猜测是这是 Unix 时间戳,所以将 HEX 转换为 DEC 并转换为 32 位 int = >
5F:A2:30:77 -> 1999675999 equivalent to 2033-05-14T09:33:19+00:00 in ISO 8601
6D:A2:30:77 -> 1999676013 equivalent to 2033-05-14T09:33:33+00:00 in ISO 8601
但不幸的是这不起作用
希望有人知道如何转换它。
谢谢
//金
还有更多警报可以使用。
1) 20:32:30:77 --> 2019-03-03 - 09:05
2) 27:32:30:77 --> 2019-03-03 - 09:11
3) 5F:A2:30:77 --> 2019.03-10 - 10:08
4) 6D:A2:30:77 --> 2019.03-10 - 10:21
5) 9A:A4:30:77 --> 2019-03-10 - 19:38
6) 9B:A4:30:77 --> 2019-03-10 - 19:39
X) X1:X2:X3:X4
X1 = are minutes, This is easy to see from the values I have.
但其余部分如何协同工作以及如何转换为 date/time...?
我很确定必须向后读取字节
如果我将#3 和#5 从十六进制转换为十进制
3) 77:30:A2:5F -> 1999675999
5) 77:30:A4:9A -> 1999676570
this gives a difference of '571' and The time frame is 9 hours, 30 minutes,
which results in 570 minutes.
77:30:A2:5F -> 1999675999
5) 77:30:A4:9A -> 1999676570
这给出了“571”的差异,时间范围是 9 小时 30 分钟,
结果是 570 分钟。
分享改进这个答案
我们已经解决了这个转换的谜题:-)。
byte 1 = Minutes after midnight.
byte 2 = Day of the month.
byte 3 = Month.
byte 4 = Number of years since 1900.
# 2019.03.10 19:38
stamp = int(0x7730A49A)
time = stamp & 0b111111111111
hours = int(time/60)
minutes = time - (hours*60)
day = (stamp >> 12) & 0xFF
month = (stamp >> 20) & 0xF
year = (stamp >> 24) + 1900
感谢所有试图提供帮助的人。
案件结案:-)
尝试将 4 个十六进制值从我的供暖系统逆向工程为日期时间戳
我知道:
5F:A2:30:77 --> 2019.03-10 - 10:08
6D:A2:30:77 --> 2019.03-10 - 10:21
我的第一个猜测是这是 Unix 时间戳,所以将 HEX 转换为 DEC 并转换为 32 位 int = >
5F:A2:30:77 -> 1999675999 equivalent to 2033-05-14T09:33:19+00:00 in ISO 8601
6D:A2:30:77 -> 1999676013 equivalent to 2033-05-14T09:33:33+00:00 in ISO 8601
但不幸的是这不起作用
希望有人知道如何转换它。
谢谢
//金
还有更多警报可以使用。
1) 20:32:30:77 --> 2019-03-03 - 09:05
2) 27:32:30:77 --> 2019-03-03 - 09:11
3) 5F:A2:30:77 --> 2019.03-10 - 10:08
4) 6D:A2:30:77 --> 2019.03-10 - 10:21
5) 9A:A4:30:77 --> 2019-03-10 - 19:38
6) 9B:A4:30:77 --> 2019-03-10 - 19:39
X) X1:X2:X3:X4
X1 = are minutes, This is easy to see from the values I have.
但其余部分如何协同工作以及如何转换为 date/time...?
我很确定必须向后读取字节
如果我将#3 和#5 从十六进制转换为十进制
3) 77:30:A2:5F -> 1999675999
5) 77:30:A4:9A -> 1999676570
this gives a difference of '571' and The time frame is 9 hours, 30 minutes,
which results in 570 minutes.
77:30:A2:5F -> 1999675999 5) 77:30:A4:9A -> 1999676570 这给出了“571”的差异,时间范围是 9 小时 30 分钟, 结果是 570 分钟。 分享改进这个答案
我们已经解决了这个转换的谜题:-)。
byte 1 = Minutes after midnight.
byte 2 = Day of the month.
byte 3 = Month.
byte 4 = Number of years since 1900.
# 2019.03.10 19:38
stamp = int(0x7730A49A)
time = stamp & 0b111111111111
hours = int(time/60)
minutes = time - (hours*60)
day = (stamp >> 12) & 0xFF
month = (stamp >> 20) & 0xF
year = (stamp >> 24) + 1900
感谢所有试图提供帮助的人。
案件结案:-)