我正在尝试解码FM1100 teltonika记录中的一些数据,例如:
080400000113fc208dff000f14f650209cca80006f00d60400040004030101150316030001460000015d0000000113fc17610b000f14ffe0209cc580006e00c00500010004030101150316010001460000015e0000000113fc284945000f150f00209cd200009501080400000004030101150016030001460000015d0000000113fc267c5b000f150a50209cccc0009300680400000004030101150016030001460000015b0004
在上面的例子中,我实际上只想提取日志的时间戳。此时间戳是字符串“00000113fc208dff”。
如何将此字符串转换为时间戳?
答案 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元素数据,因为它的长度可变。