Извлечь метку времени из записи FM1100

Я пытаюсь декодировать некоторые данные из записи телтоника FM1100, например:

080400000113fc208dff000f14f650209cca80006f00d60400040004030101150316030001460000015d0000000113fc17610b000f14ffe0209cc580006e00c00500010004030101150316010001460000015e0000000113fc284945000f150f00209cd200009501080400000004030101150016030001460000015d0000000113fc267c5b000f150a50209cccc0009300680400000004030101150016030001460000015b0004

В приведенном выше примере я просто хочу извлечь метку времени из журнала. Эта временная метка является строкой «00000113fc208dff».

Как я могу преобразовать эту строку во временную метку?

0

Решение

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

Предполагая, что вам просто нужна временная метка первой записи в журнале, вы можете извлечь ее следующим образом (fiddle Вот):

$input = '080400000113fc208dff000f14f650209cca80006f00d60400040004030101150316030001460000015d0000000113fc17610b000f14ffe0209cc580006e00c00500010004030101150316010001460000015e0000000113fc284945000f150f00209cd200009501080400000004030101150016030001460000015d0000000113fc267c5b000f150a50209cccc0009300680400000004030101150016030001460000015b0004';

$data = unpack('A2/A2/A16timestamp', $input);
$timestamp = hexdec($data['timestamp']);

echo $timestamp . PHP_EOL;

Если вам нужно прочитать временные метки каждой записи в журнале, вам нужно будет проанализировать данные элемента IO для каждого из них, потому что они имеют переменную длину.

0

Другие решения

Других решений пока нет …