Кодирование даты-времени, ищу ключ к протоколу обмена - C#
Формулировка задачи:
Привет,
есть программа которая общается с сервером. Пытаюсь пропарсить протокол.
Есть последовательность байт, которая однозначно соответствует дате-времени.
8A B8 CC A1 F2 56 означает 20:00:00
C6 C6 C9 A1 F2 56 означает 19:59:36
Последний байт 56 точно соответствует 2017 году, так как в прошлом году здесь проходил байт 55.
Нужно выудить время. Уже голову сломал, помогите пожалуйста!!!
Решение задачи: «Кодирование даты-времени, ищу ключ к протоколу обмена»
textual
Листинг программы
static ulong decode_unsigned_varint(byte[] data, out int decoded_bytes)
{
int i = 0;
ulong decoded_value = 0;
int shift_amount = 0;
do
{
decoded_value |= (ulong)(data[i] & 0x7F) << shift_amount;
shift_amount += 7;
} while ((data[i++] & 0x80) != 0);
decoded_bytes = i;
return decoded_value;
}
// len == 6, val = 2986109432486
ulong val = decode_unsigned_varint(new byte[] { 0xA6, 0xE5, 0xF7, 0x8F, 0xF4, 0x56 }, out int len);
// 1493054716 = Monday, 24-Apr-17 17:25:16 UTC
ulong time = val / 1000 / 2;