Кодирование даты-времени, ищу ключ к протоколу обмена - 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;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы