从FM1100记录中提取时间戳

时间:2016-01-08 17:14:09

标签: php avl-tree

我正在尝试解码FM1100 teltonika记录中的一些数据,例如:

  

080400000113fc208dff000f14f650209cca80006f00d60400040004030101150316030001460000015d0000000113fc17610b000f14ffe0209cc580006e00c00500010004030101150316010001460000015e0000000113fc284945000f150f00209cd200009501080400000004030101150016030001460000015d0000000113fc267c5b000f150a50209cccc0009300680400000004030101150016030001460000015b0004

在上面的例子中,我实际上只想提取日志的时间戳。此时间戳是字符串“00000113fc208dff”。

如何将此字符串转换为时间戳?

1 个答案:

答案 0 :(得分:0)

根据协议文档I' ve found here,该记录实际上包含多个日志条目(第5页),每个日志条目都有自己的时间戳。

假设您只需要第一个日志条目的时间戳,您可以像这样提取它(小提琴here):

$input = '080400000113fc208dff000f14f650209cca80006f00d60400040004030101150316030001460000015d0000000113fc17610b000f14ffe0209cc580006e00c00500010004030101150316010001460000015e0000000113fc284945000f150f00209cd200009501080400000004030101150016030001460000015d0000000113fc267c5b000f150a50209cccc0009300680400000004030101150016030001460000015b0004';

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

echo $timestamp . PHP_EOL;

如果需要读取每个日志记录的时间戳,则需要解析每个日志记录的IO元素数据,因为它的长度可变。