Алгоритм? F75491E368 => 02:38

Тема в разделе "PHP Pro", создана пользователем Counters, 25 июн 2009.

Статус темы:
Закрыта.
  1. Counters

    Counters Постоялец

    Регистр.:
    7 сен 2006
    Сообщения:
    82
    Симпатии:
    11
    Помогите пожалуйста найти функцию или алгоритм преобразования строки в дату (либо во время)
    Для примера:
    F75491E368 => 02:38
    F756A9C66C => 00:02
    F75491E4EB => 02:40
    Исходные значения содержаться в фаербёрд интербазе.
     
  2. vivid

    vivid Постоялец

    Регистр.:
    13 апр 2009
    Сообщения:
    143
    Симпатии:
    18
    явно не таймстемп 32 битный, а помимо времени даты нет?
     
  3. Counters

    Counters Постоялец

    Регистр.:
    7 сен 2006
    Сообщения:
    82
    Симпатии:
    11
    Вообщем то если убрать букву F то получаеться НЕХ цифра
    итого имеем:
    75491E368 => 75491 # 02:38
    756A9C66C => 756 # 00:02
    75491E4EB => 75491 # 02:40

    Однако у меня не выходит сопоставить это со временем которому предположительно равны данные значения.
     
  4. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    Откуда взялось предположительное время? 02:38 - это что? часы:минуты или минуты:секунды?

    F75491E368 => 02:38
    F75491E4EB => 02:40

    Допустим, время задано в часах:минутах.
    Тогда разница во времени примерно от чуть больше одной минуты до почти 3 минут (примерно потому, что секунды могут быть просто отброшены:( например 02:38:00-02:40:59
    итого разница может составить от 61 секунды до 179 секунд.

    0xF75491E4EB-0xF75491E368=0x183=387

    387 секунд, это примерно 6 с половиной минут. Никак не клеется с диапазоном от 61 до 179 секунд.

    если
    то, может быть, вам попытаться определить тип поля, в котором данные лежат?
     
  5. Counters

    Counters Постоялец

    Регистр.:
    7 сен 2006
    Сообщения:
    82
    Симпатии:
    11
    Тип поля CHAR
    Вы всё правильно предположили это часы и минуты.
    Однако допустим я мог ошибиться с предполагаемыми значениями.
    Можете назвать чему могут быть равны эти циферки в минутах?
    F75491E368
    F756A9C66C
    F75491E4EB
    А то я что то запутался немного... :confused:
     
  6. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    нужна инфомация, необязательно непосредственно касающаяся данных. Что за база, что у нее внутри, к какому периоду может относиться, есть ли вывод на экран из программы и т.п. Тогда могут появиться идеи. А если в лоб раскодировать, то так:

    PHP:
    $x date('Y-m-d H:i:s'0xF75491E368/1000);
    echo 
    "x=$x\n";
    $x date('Y-m-d H:i:s'0xF756A9C66C/1000);
    echo 
    "x=$x\n";
    $x date('Y-m-d H:i:s'0xF75491E4EB/1000);
    echo 
    "x=$x\n";
    Результат вывода:
    Код:
    x=2003-08-31 00:36:09
    x=2003-08-31 10:21:29
    x=2003-08-31 00:36:09
    но оснований никаких, что это именно те даты.
    Я предположил, что данные хранят количество миллисекунд с 1.1.1970

    В кодировке разобрался. Здесь закодировано время в часах:минутах. В 5 байтах кода (например, F75491E368), закодировано 5 байт
    текстового представления времени: 02:38
    Время 00:00 кодируется как F756A9C66E. Чтобы получить время 00:00, выполняем F756A9C66E xor C76693F65E.
     
    Counters нравится это.
Статус темы:
Закрыта.