2017-02-18 50 views
1

У меня есть следующая известная пара шестнадцатеричных значений и даты:Как декодировать этот формат времени в 6 байт?

4e754e473248 -> 23:56:23 16/02/2017 
4e764e473248 -> 23:57:23 16/02/2017 
4e784e473248 -> 23:59:23 16/02/2017 
304162483248 -> 00:10:37 17/02/2017 
304262483248 -> 00:11:37 17/02/2017 
30456f483248 -> 00:14:50 17/02/2017 

Я не могу понять, как конвертировать из одного в других. Кто-нибудь знает этот формат шестнадцатеричного кодирования?

Собирая сотни пар, я подошел к изображению ниже. Отображение применяется к часам, минутам, секундам. Они также хранятся в течение дня, месяца и года, хотя я не мог долго тестировать месячную и годовую часть. Обратите внимание, что некоторые номера в последовательности пропускаются по какой-либо причине.

Первый столбец - это декодированное значение, остальные - закодированное значение в разных радиусах.

deco dc hx  binary 
----------------------- 
00: 48 - 30 - 00110000 
01: 49 - 31 - 00110001 
02: 50 - 32 - 00110010 
03: 51 - 33 - 00110011 
04: 52 - 34 - 00110100 
05: 53 - 35 - 00110101 
06: 54 - 36 - 00110110 
07: 55 - 37 - 00110111 
08: 56 - 38 - 00111000 
09: 57 - 39 - 00111001 <- jump 
10: 65 - 41 - 01000001 
11: 66 - 42 - 01000010 
12: 67 - 43 - 01000011 
13: 68 - 44 - 01000100 
14: 69 - 45 - 01000101 
15: 70 - 46 - 01000110 
16: 71 - 47 - 01000111 
17: 72 - 48 - 01001000 
18: 73 - 49 - 01001001 
19: 74 - 4a - 01001010 
20: 75 - 4b - 01001011 
21: 76 - 4c - 01001100 
22: 77 - 4d - 01001101 
23: 78 - 4e - 01001110 <- this is the maximum observed value for hours 
24: 79 - 4f - 01001111 
25: 80 - 50 - 01010000 
26: 81 - 51 - 01010001 
27: 82 - 52 - 01010010 
28: 83 - 53 - 01010011 
29: 84 - 54 - 01010100 
30: 85 - 55 - 01010101 
31: 86 - 56 - 01010110 
32: 87 - 57 - 01010111 
33: 88 - 58 - 01011000 
34: 89 - 59 - 01011001 
35: 90 - 5a - 01011010 <- jump 
36: 97 - 61 - 01100001 
37: 98 - 62 - 01100010 
38: 99 - 63 - 01100011 
39: 100 - 64 - 01100100 
40: 101 - 65 - 01100101 
41: 102 - 66 - 01100110 
42: 103 - 67 - 01100111 
43: 104 - 68 - 01101000 
44: 105 - 69 - 01101001 
45: 106 - 6a - 01101010 
46: 107 - 6b - 01101011 
47: 108 - 6c - 01101100 
48: 109 - 6d - 01101101 
49: 110 - 6e - 01101110 
50: 111 - 6f - 01101111 
51: 112 - 70 - 01110000 
52: 113 - 71 - 01110001 
53: 114 - 72 - 01110010 
54: 115 - 73 - 01110011 
55: 116 - 74 - 01110100 
56: 117 - 75 - 01110101 
57: 118 - 76 - 01110110 
58: 119 - 77 - 01110111 
59: 120 - 78 - 01111000 

ответ

3

Ваш стол можно резюмировать

'0' through '9' (hex 30 through 39) = 0 through 9 
'A' through 'Z' (hex 41 through 5A) = 10 through 35 
'a' through 'z' (hex 61 through 7A) = 36 through 61 

Разрывы так, что закодированные значения всегда алфавитно-цифровой.

+0

Сумасшедший! Таким образом, я не могу использовать простую формулу для преобразования. Мне нужна таблица сопоставления. – Gustavo

+1

@Gustavo Ваша простая формула может быть 'value = hex - 0x30; если (значение> 9) значение - = 7; if (значение> 35) значение - = 6; ' –