【问题标题】:Converting a Hex values to date in C#在 C# 中将十六进制值转换为日期
【发布时间】:2011-05-26 18:10:24
【问题描述】:

d我有一个程序,它以二进制形式存储日期并在程序上显示为 YY/MM/DD 格式。我使用XVI32(http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm)查看十六进制的二进制文件,得到如下结果

例如,

十六进制值:31 07 01 00
日期值:85/06/18(YY/MM/DD 格式)

另一个例子,

十六进制值:EF 1B 01 00
日期值:00/01/01(YY/MM/DD 格式)

最后一个例子,

十六进制值:32 07 01 00
日期值:85/06/19(YY/MM/DD 格式)

我不需要编程代码,但需要了解从十六进制值到实际可读日期格式的转换。谢谢。

【问题讨论】:

    标签: binary hex


    【解决方案1】:

    该数字是自某个时期以来的天数的小端表示。看起来软件计算的不是很正确,因为日期距离 1801-01-01 仅差几天。

    +------------+------------+----------------+-------- --------+ |日期 |十六进制值 |小数(天)|日期 - 天数 | +------------+------------+----------------+-------- --------+ | 1985-06-18 | 0x00010731 | 67377 | 1800-12-28 | | 1985-06-19 | 0x00010732 | 67378 | 1800-12-28 | | 2000-01-01 | 0x00011bef | 72687 | 1800-12-28 | +------------+------------+----------------+-------- --------+

    看看它将 1801-01-01 转换成什么可能会很有趣。如果它使用 1800-12-28 作为 epoch,它应该转换为 4,或者保存到文件时转换为 04 00 00 00。如果它转换为00 00 00 00,则软件使用的日期数学会在某处跳过某些​​日期。

    因此,总而言之:十六进制值表示自可能的纪元 1800-12-28 以来的天数。要获取日期,将天数添加到此日期,从而在程序中显示日期。

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 1970-01-01
      • 2021-06-26
      • 2021-01-04
      • 2017-07-31
      • 2013-07-20
      • 2012-06-17
      • 1970-01-01
      • 2014-02-05
      相关资源
      最近更新 更多