2

いくつかの短い整数とそれらが表す日付を考えると、それらがこの形式でどのように格納されているかを判断し、他の日付をデコードする体系的な方法はありますか? 保存されたデータは、別のソフトウェアからのものです。

5 月 1 日の最初のバイトから 2 月 11 日の最初のバイトを差し引いたものが正しい日数 (2011 年は 79) に等しいので、最初は日数がいずれかのバイトで表されていると考えていました。しかし、8 ビットでは 256 日しか格納できないだけでなく、2000 年より前の日付は年のみを両方のバイトで格納できるため、それほど単純ではありません。

ここに私が取り組んでいるものがありますが、列見出しを一粒の塩で考えてください。

DDDDDDDD YYYYYYYY DD-MM-YY
01011010 10001010 1955
10110010 10010001 1960
11000000 10010001 1961
11100011 11000011 1996
01010001 11000110 1997
00001101 11001000 1999
10000000 11001001 10-02-00
11010101 11001010 16-01-01
10101010 11001101 11-01-03
00000101 11010000 05-09-04
10011101 11010101 07-08-08
11010000 11010101 27-09-08
00010000 11010110 30-11-08
00110100 11010110 05-01-09
11111110 11010110 26-07-09
10011101 11010111 01-01-10
10110111 11011000 10-10-10
00110011 11011001 11-02-11
00111010 11011001 18-02-11
10000010 11011001 01-05-11
10000101 11011001 04-05-11
01101100 11100110 19-05-20

また、30-11-08 の 2 番目のバイトは 05-01-09 と同じであり、逆に 2010 年の 2 つの日付の 2 番目のバイトの値は異なります。

編集: 回答といくつかの調査のおかげで、エポックは 1858 年 11 月 17 日であることがわかりました。これは修正ユリウス日と呼ばれる標準形式です。

4

2 に答える 2

3

過去のある時点から 1858 年までの日数のように見えますが (閏年のすべての魔法を解決したわけではありません)、年日は既存のアプリにのみ表示されます >= 2000.年をマークしたバイトは上位バイトで、「日」バイトは下位バイトです。

于 2011-05-21T02:55:20.063 に答える
2

エポックからの経過日数の 16 ビットだけではありませんか? 2000 年 2 月 10 日は 51584 です。2011 年 2 月 18 日は 55610 です。- (11 * 365) + うるう日 3 日 + 月日差 8 日の間に 4026 日あります。エポックの開始は、おおよそ 1860 年のようです。または、1950 年 1 月 1 日に上位 1 ビットがオンになる可能性が高くなります。

于 2011-05-21T03:05:31.307 に答える