Кодирование даты-времени, ищу ключ к протоколу обмена - C#

Узнай цену своей работы

Формулировка задачи:

Привет, есть программа которая общается с сервером. Пытаюсь пропарсить протокол. Есть последовательность байт, которая однозначно соответствует дате-времени. 8A B8 CC A1 F2 56 означает 20:00:00 C6 C6 C9 A1 F2 56 означает 19:59:36 Последний байт 56 точно соответствует 2017 году, так как в прошлом году здесь проходил байт 55. Нужно выудить время. Уже голову сломал, помогите пожалуйста!!!

Решение задачи: «Кодирование даты-времени, ищу ключ к протоколу обмена»

textual
Листинг программы
  1.         static ulong decode_unsigned_varint(byte[] data, out int decoded_bytes)
  2.         {
  3.             int i = 0;
  4.             ulong decoded_value = 0;
  5.             int shift_amount = 0;
  6.  
  7.             do
  8.             {
  9.                 decoded_value |= (ulong)(data[i] & 0x7F) << shift_amount;
  10.                 shift_amount += 7;
  11.             } while ((data[i++] & 0x80) != 0);
  12.  
  13.             decoded_bytes = i;
  14.             return decoded_value;
  15.         }
  16.  
  17.         // len == 6, val = 2986109432486
  18.         ulong val = decode_unsigned_varint(new byte[] { 0xA6, 0xE5, 0xF7, 0x8F, 0xF4, 0x56 }, out int len);
  19.         // 1493054716 = Monday, 24-Apr-17 17:25:16 UTC
  20.         ulong time = val / 1000 / 2;

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


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

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

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы