【问题标题】:Deciphering some Hexcode解密一些十六进制代码
【发布时间】:2014-07-10 12:11:56
【问题描述】:

我正在破译一些我确定是日期的十六进制代码。

我已经确定:

50 C0 01 00 => 2014-05-21
52 C0 01 00 => 2014-05-23
59 C0 01 00 => 2014-05-30

00 的最后一个字节似乎是多余的填充。 我尝试应用 MySQL uses for dates 的打包方案,但这似乎在这里不起作用。

你们对这些日期是如何被打包成二进制/十六进制代码有任何见解吗?

【问题讨论】:

  • 可以是修改后的朱利安日期:en.wikipedia.org/wiki/Julian_day
  • @wildplasser 与其说是从 1700 年 3 月 1 日开始的时代,我很快就会添加答案。
  • 这只是一个猜测时代(我划分了 64K / 365 ;-)
  • @wildplasser 是的,同样的事情,我除以 365.25,结果很好。 :)

标签: hex hexdump hex-editors


【解决方案1】:

只是一个疯狂的猜测,但也许会有用。

如果您将数字解释为 little-endian 32 位整数,则:

0x0001c050 = 114768

十进制。还要注意数字中的差异如何意味着一天的差异。因此,日期中的一个意味着一天。出于好奇,我将这个 114768 除以 365.25(一年中的平均天数)。那是 314.217659,即 314 年零 79 或 80 天。

如果您从 2014 年 5 月 21 日开始倒数 314 年零 80 天,那么您将到达 1700 年 3 月 1 日。这是公历系统的基本日期。

所以我想这个日期格式只是公历纪元以来经过的天数。

【讨论】:

  • 我做了一些额外的测试,你似乎是正确的。 5C C0 01 00 => 2014-06-02 仅比 59 C0 01 00 => 2014-05-30 多 3 个,因此它似乎只是在计算自 1700-03-01 以来的天数。根据我的谷歌搜索,该日期似乎没有任何具体意义,但您的分析似乎是正确的。感谢您的帮助。
  • @BlazeCell 不客气。不过,它确实具有特殊意义——它是公历的第一天,因此它是不受儒略纪元误差/偏移影响的第一天。
猜你喜欢
  • 2014-12-23
  • 2017-06-29
  • 1970-01-01
  • 2017-05-07
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 2018-09-27
相关资源
最近更新 更多