回答編集履歴
19
test
CHANGED
@@ -121,7 +121,7 @@
|
|
121
121
|
|
122
122
|
# まとめ
|
123
123
|
ターゲットとなる4バイトを2進数化して先頭から4bitずつ区切ったものを「a, b, c, d, e, f, g, h」とおいたとき:
|
124
|
-
・年 = b の上位3bit(*)に、2016(10進数)を足した数 (*「aの下位2bit+bの上位3bit」である可能性
|
124
|
+
・年 = b の上位3bit(*)に、2016(10進数)を足した数 (*「aの下位2bit+bの上位3bit」である可能性が高い)
|
125
125
|
・月 = d の下位2bit + a の上位2bit
|
126
126
|
・日 = c の下位3bit + d の上位2bit
|
127
127
|
・時 = f (4bit)+ c の上位1bit
|
18
test
CHANGED
@@ -133,6 +133,14 @@
|
|
133
133
|
(ミリ秒の格納方法は不明です。コメントの追加データから規則性は見つけられませんでした)
|
134
134
|
|
135
135
|
|
136
|
+
---
|
137
|
+
解析手順の途中で、cをfの後ろに持って行っただけの状態で進めたので、不可解な格納方法に思われましたが
|
138
|
+
それぞれのbit列が連続するように整理すると、
|
139
|
+
下記のように、g h -> e f -> c d -> a b の順(バイト列で見るとリトルエンディアン)になっていますね。
|
140
|
+
```
|
141
|
+
g h e f c d a b
|
142
|
+
ssss ssmm mmmm HHHH HDDD DDMM MM?? yyy?
|
143
|
+
```
|
136
144
|
|
137
145
|
|
138
146
|
|
17
test
CHANGED
@@ -96,7 +96,7 @@
|
|
96
96
|
0000 1010 1101 ---- ---- -100 ---- ---- | 2021/04/19
|
97
97
|
0100 1100 0000 ---- ---- -110 ---- ---- | 2022/01/24
|
98
98
|
```
|
99
|
-
試行錯誤して、残りの部分で月/日を6つの例と整合する
|
99
|
+
試行錯誤して、残りの部分で月/日を6つの例と整合するような組み合わせを探すと、下記のようになりました。
|
100
100
|
・月 => dの下位2bit+aの上位2bit
|
101
101
|
・日 => cの下位3bit+dの上位2bit
|
102
102
|
```
|
16
test
CHANGED
@@ -130,7 +130,7 @@
|
|
130
130
|
|
131
131
|
※上記において、「+」記号は、前に記述した2進数に、後ろに記述した2進数を連結することを表す。
|
132
132
|
|
133
|
-
(ミリ秒の格納方法は不明です。
|
133
|
+
(ミリ秒の格納方法は不明です。コメントの追加データから規則性は見つけられませんでした)
|
134
134
|
|
135
135
|
|
136
136
|
|
15
test
CHANGED
@@ -82,7 +82,7 @@
|
|
82
82
|
0100 1100 0000 ---- ---- -110 ---- ---- | 2022/01/24
|
83
83
|
0100 1100 0000 ---- ---- -110 ---- ---- | 2022/01/24
|
84
84
|
```
|
85
|
-
下の
|
85
|
+
下の4つはバイナリ・日付文字列共に共通なので、上の3つだけから考えるしかなさそうです。
|
86
86
|
|
87
87
|
ここで、2021と2022の差 「1」に相当する部分が作れないか探してみます。
|
88
88
|
すると、bの上位3bitで説明できそうですね。
|
14
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# 時・分・秒について
|
2
|
-
とりえ
|
2
|
+
とりあえず、当初の質問文に与えられた6つの4バイトのデータで検証しただけですが、
|
3
3
|
時・分・秒は、下記のような規則が成り立っているようです。
|
4
4
|
|
5
5
|
1.質問文の6つの例について、左側に元データの16進数を2進数化したもの、右側に時刻表現を並べました。
|
13
test
CHANGED
@@ -121,7 +121,7 @@
|
|
121
121
|
|
122
122
|
# まとめ
|
123
123
|
ターゲットとなる4バイトを2進数化して先頭から4bitずつ区切ったものを「a, b, c, d, e, f, g, h」とおいたとき:
|
124
|
-
・年 = b の上位3bit(
|
124
|
+
・年 = b の上位3bit(*)に、2016(10進数)を足した数 (*「aの下位2bit+bの上位3bit」である可能性もあるが、データ不足のため検証不可)
|
125
125
|
・月 = d の下位2bit + a の上位2bit
|
126
126
|
・日 = c の下位3bit + d の上位2bit
|
127
127
|
・時 = f (4bit)+ c の上位1bit
|
12
test
CHANGED
@@ -121,7 +121,7 @@
|
|
121
121
|
|
122
122
|
# まとめ
|
123
123
|
ターゲットとなる4バイトを2進数化して先頭から4bitずつ区切ったものを「a, b, c, d, e, f, g, h」とおいたとき:
|
124
|
-
・年 = b の上位3bitに、2016(10進数)を足した数
|
124
|
+
・年 = b の上位3bit(*)に、2016(10進数)を足した数 (* 「aの下位2bit+bの上位3bit」である可能性もあるが、データ不足のため検証不可)
|
125
125
|
・月 = d の下位2bit + a の上位2bit
|
126
126
|
・日 = c の下位3bit + d の上位2bit
|
127
127
|
・時 = f (4bit)+ c の上位1bit
|
11
test
CHANGED
@@ -43,7 +43,7 @@
|
|
43
43
|
となっているようです。
|
44
44
|
```
|
45
45
|
Hour、minute、secondを表す桁を区切ってみました。
|
46
|
-
<-------- BINARY ---------> |<-------- DATETIME STRING--------->
|
46
|
+
<-------- BINARY ---------> |<-------- DATETIME STRING--------->
|
47
47
|
a b d e f [c] g h |
|
48
48
|
|
49
49
|
mmmm2HHHH H-??? ssss ss:mm1
|
10
test
CHANGED
@@ -120,7 +120,7 @@
|
|
120
120
|
```
|
121
121
|
|
122
122
|
# まとめ
|
123
|
-
ターゲットとなる4バイトを先頭から4bitずつ区切ったものを「a, b, c, d, e, f, g, h」とおいたとき:
|
123
|
+
ターゲットとなる4バイトを2進数化して先頭から4bitずつ区切ったものを「a, b, c, d, e, f, g, h」とおいたとき:
|
124
124
|
・年 = b の上位3bitに、2016(10進数)を足した数
|
125
125
|
・月 = d の下位2bit + a の上位2bit
|
126
126
|
・日 = c の下位3bit + d の上位2bit
|
9
test
CHANGED
@@ -128,6 +128,8 @@
|
|
128
128
|
・分 = h の下位2bit + e (4bit)
|
129
129
|
・秒 = g (4bit) + h の上位2bit
|
130
130
|
|
131
|
+
※上記において、「+」記号は、前に記述した2進数に、後ろに記述した2進数を連結することを表す。
|
132
|
+
|
131
133
|
(ミリ秒の格納方法は不明です。私の力では、コメントの追加データから規則性は見つけれませんでした)
|
132
134
|
|
133
135
|
|
8
まとめ追記
test
CHANGED
@@ -119,7 +119,20 @@
|
|
119
119
|
※年は2016を足す。
|
120
120
|
```
|
121
121
|
|
122
|
+
# まとめ
|
123
|
+
ターゲットとなる4バイトを先頭から4bitずつ区切ったものを「a, b, c, d, e, f, g, h」とおいたとき:
|
124
|
+
・年 = b の上位3bitに、2016(10進数)を足した数
|
125
|
+
・月 = d の下位2bit + a の上位2bit
|
126
|
+
・日 = c の下位3bit + d の上位2bit
|
127
|
+
・時 = f (4bit)+ c の上位1bit
|
128
|
+
・分 = h の下位2bit + e (4bit)
|
129
|
+
・秒 = g (4bit) + h の上位2bit
|
130
|
+
|
131
|
+
(ミリ秒の格納方法は不明です。私の力では、コメントの追加データから規則性は見つけれませんでした)
|
122
132
|
|
123
133
|
|
124
134
|
|
125
135
|
|
136
|
+
|
137
|
+
|
138
|
+
|
7
年月日について追加
test
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
+
# 時・分・秒について
|
1
|
-
とりえあず
|
2
|
+
とりえあず、当初の質問文に与えられた6つのデータで検証しただけですが、
|
2
3
|
時・分・秒は、下記のような規則が成り立っているようです。
|
3
4
|
|
4
5
|
1.質問文の6つの例について、左側に元データの16進数を2進数化したもの、右側に時刻表現を並べました。
|
@@ -67,6 +68,58 @@
|
|
67
68
|
01000:011101:000001 ===> 08:29:01
|
68
69
|
```
|
69
70
|
|
71
|
+
# 年月日について
|
72
|
+
|
73
|
+
時・分・秒は上の考え方でOKとみなして、時分秒に該当する部分をマスクしたデータを眺めてみましょう。
|
74
|
+
```
|
75
|
+
<-------- BINARY ---------> |<-------- DATETIME STRING--------->
|
76
|
+
a b d e f [c] g h |
|
77
|
+
|
78
|
+
0100 1010 1101 ---- ---- -001 ---- ---- | 2021/05/07
|
79
|
+
0000 1010 1101 ---- ---- -100 ---- ---- | 2021/04/19
|
80
|
+
0100 1100 0000 ---- ---- -110 ---- ---- | 2022/01/24
|
81
|
+
0100 1100 0000 ---- ---- -110 ---- ---- | 2022/01/24
|
82
|
+
0100 1100 0000 ---- ---- -110 ---- ---- | 2022/01/24
|
83
|
+
0100 1100 0000 ---- ---- -110 ---- ---- | 2022/01/24
|
84
|
+
```
|
85
|
+
下の3つはバイナリ・日付文字列共に共通なので、上の3つだけから考えるしかなさそうです。
|
86
|
+
|
87
|
+
ここで、2021と2022の差 「1」に相当する部分が作れないか探してみます。
|
70
|
-
|
88
|
+
すると、bの上位3bitで説明できそうですね。
|
89
|
+
仮に、「bの上位3bitに2016を足したものが年になる」と仮定して残りの桁を見ていきましょう。
|
90
|
+
|
91
|
+
```
|
92
|
+
<-------- BINARY ---------> |<-------- DATETIME STRING--------->
|
93
|
+
a b d e f [c] g h |
|
94
|
+
yyy
|
95
|
+
0100 1010 1101 ---- ---- -001 ---- ---- | 2021/05/07
|
96
|
+
0000 1010 1101 ---- ---- -100 ---- ---- | 2021/04/19
|
97
|
+
0100 1100 0000 ---- ---- -110 ---- ---- | 2022/01/24
|
98
|
+
```
|
99
|
+
試行錯誤して、残りの部分で月/日を6つの例と整合する等に説明するとすれば、下記のようになります。
|
100
|
+
・月 => dの下位2bit+aの上位2bit
|
101
|
+
・日 => cの下位3bit+dの上位2bit
|
102
|
+
```
|
103
|
+
<-------- BINARY ---------> |<-------- DATETIME STRING--------->
|
104
|
+
a b d e f [c] g h |
|
105
|
+
1234 1234 1234 1234 1234 1234 1234 1234 |
|
106
|
+
MM2 yyy MM1
|
107
|
+
DD2 DDD1
|
108
|
+
0100 1010 1101 ---- ---- -001 ---- ---- | 2021/05/07
|
109
|
+
0000 1010 1101 ---- ---- -100 ---- ---- | 2021/04/19
|
110
|
+
0100 1100 0000 ---- ---- -110 ---- ---- | 2022/01/24
|
111
|
+
```
|
112
|
+
|
113
|
+
年月日を並び替えて表示
|
114
|
+
```
|
115
|
+
yyy/MMMM/DDDDD
|
116
|
+
101/0101/00111 ===> 5/05/07
|
117
|
+
101/0100/10011 ===> 5/04/19
|
118
|
+
110/0001/11000 ===> 6/01/24
|
119
|
+
※年は2016を足す。
|
120
|
+
```
|
71
121
|
|
72
122
|
|
123
|
+
|
124
|
+
|
125
|
+
|
6
test
CHANGED
@@ -41,7 +41,7 @@
|
|
41
41
|
|
42
42
|
となっているようです。
|
43
43
|
```
|
44
|
-
Hour、min
|
44
|
+
Hour、minute、secondを表す桁を区切ってみました。
|
45
45
|
<-------- BINARY ---------> |<-------- DATETIME STRING--------->
|
46
46
|
a b d e f [c] g h |
|
47
47
|
|
5
時間も24まであり得るので修正
test
CHANGED
@@ -35,9 +35,9 @@
|
|
35
35
|
|
36
36
|
3.このようにしたとき、
|
37
37
|
|
38
|
-
時 = f
|
38
|
+
時 = f(4bit)+cの上位1bit
|
39
|
-
分 = hの下位2bit+e
|
39
|
+
分 = hの下位2bit+e(4bit)
|
40
|
-
秒 = g4bit+hの上位2bit
|
40
|
+
秒 = g(4bit)+hの上位2bit
|
41
41
|
|
42
42
|
となっているようです。
|
43
43
|
```
|
4
時間を表すHとNibbleを表すhを区別
test
CHANGED
@@ -41,11 +41,11 @@
|
|
41
41
|
|
42
42
|
となっているようです。
|
43
43
|
```
|
44
|
-
|
44
|
+
Hour、miniute、secondを表す桁を区切ってみました。
|
45
45
|
<-------- BINARY ---------> |<-------- DATETIME STRING--------->
|
46
46
|
a b d e f [c] g h |
|
47
47
|
|
48
|
-
mmmm2
|
48
|
+
mmmm2HHHH H-??? ssss ss:mm1
|
49
49
|
0100 1010 1101 1011 0010 1-001 0101 10:11 | 2021/05/07 05:59:22,971
|
50
50
|
0000 1010 1101 0001 0100 0-100 0011 11:11 | 2021/04/19 08:49:15,020
|
51
51
|
0100 1100 0000 0101 0011 1-110 0000 00:01 | 2022/01/24 07:21:00,870
|
@@ -58,7 +58,7 @@
|
|
58
58
|
時・分・秒を並べかえて表示
|
59
59
|
|
60
60
|
```text
|
61
|
-
|
61
|
+
HHHHH:mmmmmm:ssssss
|
62
62
|
00101:111011:010110 ===> 05:59:22
|
63
63
|
01000:110001:001111 ===> 08:49:15
|
64
64
|
00111:010101:000000 ===> 07:21:00
|
3
秒の上限について考えが至っていなかったのを修正
test
CHANGED
@@ -37,34 +37,34 @@
|
|
37
37
|
|
38
38
|
時 = f 4bit+cの上位1bit (※fの最上位bitは時間に関係ないかもしれないが、現状の例だけでは不明)
|
39
39
|
分 = hの下位2bit+e 4bit
|
40
|
-
秒 = g
|
40
|
+
秒 = g4bit+hの上位2bit
|
41
41
|
|
42
42
|
となっているようです。
|
43
43
|
```
|
44
44
|
hour、miniute、secondを表す桁を区切ってみました。
|
45
45
|
<-------- BINARY ---------> |<-------- DATETIME STRING--------->
|
46
|
-
a b d e f [c] g
|
46
|
+
a b d e f [c] g h |
|
47
47
|
|
48
|
-
mmmm2hhhh h-???
|
48
|
+
mmmm2hhhh h-??? ssss ss:mm1
|
49
|
-
0100 1010 1101 1011 0010 1-001 0
|
49
|
+
0100 1010 1101 1011 0010 1-001 0101 10:11 | 2021/05/07 05:59:22,971
|
50
|
-
0000 1010 1101 0001 0100 0-100 0
|
50
|
+
0000 1010 1101 0001 0100 0-100 0011 11:11 | 2021/04/19 08:49:15,020
|
51
|
-
0100 1100 0000 0101 0011 1-110 0
|
51
|
+
0100 1100 0000 0101 0011 1-110 0000 00:01 | 2022/01/24 07:21:00,870
|
52
|
-
0100 1100 0000 0101 0011 1-110 0
|
52
|
+
0100 1100 0000 0101 0011 1-110 0010 00:10 | 2022/01/24 07:37:08,310
|
53
|
-
0100 1100 0000 0101 0100 0-110 0
|
53
|
+
0100 1100 0000 0101 0100 0-110 0100 00:00 | 2022/01/24 08:05:16,079
|
54
|
-
0100 1100 0000 1101 0100 0-110 0
|
54
|
+
0100 1100 0000 1101 0100 0-110 0000 01:01 | 2022/01/24 08:29:01,881
|
55
55
|
|
56
56
|
```
|
57
57
|
|
58
58
|
時・分・秒を並べかえて表示
|
59
59
|
|
60
60
|
```text
|
61
|
-
hhhhh:mmmmmm:sssss
|
61
|
+
hhhhh:mmmmmm:ssssss
|
62
|
-
00101:111011:10110 ===> 05:59:22
|
62
|
+
00101:111011:010110 ===> 05:59:22
|
63
|
-
01000:110001:01111 ===> 08:49:15
|
63
|
+
01000:110001:001111 ===> 08:49:15
|
64
|
-
00111:010101:00000 ===> 07:21:00
|
64
|
+
00111:010101:000000 ===> 07:21:00
|
65
|
-
00111:100101:01000 ===> 07:37:08
|
65
|
+
00111:100101:001000 ===> 07:37:08
|
66
|
-
01000:000101:10000 ===> 08:05:16
|
66
|
+
01000:000101:010000 ===> 08:05:16
|
67
|
-
01000:011101:00001 ===> 08:29:01
|
67
|
+
01000:011101:000001 ===> 08:29:01
|
68
68
|
```
|
69
69
|
|
70
70
|
年月とミリ秒については、引き続き調査中です。
|
2
test
CHANGED
@@ -37,7 +37,7 @@
|
|
37
37
|
|
38
38
|
時 = f 4bit+cの上位1bit (※fの最上位bitは時間に関係ないかもしれないが、現状の例だけでは不明)
|
39
39
|
分 = hの下位2bit+e 4bit
|
40
|
-
秒 = gの下位3bit+hの上位2bit
|
40
|
+
秒 = gの下位3bit(又は4bit?)+hの上位2bit
|
41
41
|
|
42
42
|
となっているようです。
|
43
43
|
```
|
1
test
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
|
18
18
|
```
|
19
19
|
|
20
|
-
ここで、Nibble(4bitの塊)「c」をNibble「f」の後ろ側に移動させます。
|
20
|
+
2.ここで、**Nibble(4bitの塊)「c」をNibble「f」の後ろ側に移動させます**。
|
21
21
|
```text
|
22
22
|
cをfの後ろに持っていった後:
|
23
23
|
<-------- BINARY ---------> |<-------- DATETIME STRING--------->
|
@@ -33,13 +33,13 @@
|
|
33
33
|
|
34
34
|
```
|
35
35
|
|
36
|
-
このようにしたとき、
|
36
|
+
3.このようにしたとき、
|
37
37
|
|
38
38
|
時 = f 4bit+cの上位1bit (※fの最上位bitは時間に関係ないかもしれないが、現状の例だけでは不明)
|
39
39
|
分 = hの下位2bit+e 4bit
|
40
40
|
秒 = gの下位3bit+hの上位2bit
|
41
41
|
|
42
|
-
となってい
|
42
|
+
となっているようです。
|
43
43
|
```
|
44
44
|
hour、miniute、secondを表す桁を区切ってみました。
|
45
45
|
<-------- BINARY ---------> |<-------- DATETIME STRING--------->
|