2016-01-08 79 views
0

我试图将一些数据从FM1100解码teltonika记录像这样的:提取时间戳

080400000113fc208dff000f14f650209cca80006f00d60400040004030101150316030001460000015d0000000113fc17610b000f14ffe0209cc580006e00c00500010004030101150316010001460000015e0000000113fc284945000f150f00209cd200009501080400000004030101150016030001460000015d0000000113fc267c5b000f150a50209cccc0009300680400000004030101150016030001460000015b0004

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

我怎么能这个字符串转换为一个时间戳?

+0

你能不能给我们介绍一下记录和/或时间戳的格式的详细信息? – Paul92

+0

事实上,我可以给你的文档,我得到这个为例[http://sourceforge.net/p/opengts/discussion/579834/thread/6fd0ffe8/6213/attachment/FMXXXX%20Protocols%20v2.10.pdf] (这里)。但我不能做更多,对不起,我真的迷失了。 –

回答

0

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

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

$input = '080400000113fc208dff000f14f650209cca80006f00d60400040004030101150316030001460000015d0000000113fc17610b000f14ffe0209cc580006e00c00500010004030101150316010001460000015e0000000113fc284945000f150f00209cd200009501080400000004030101150016030001460000015d0000000113fc267c5b000f150a50209cccc0009300680400000004030101150016030001460000015b0004'; 

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

echo $timestamp . PHP_EOL; 

如果你需要阅读每一个的时间戳日志记录,您将需要解析的IO元素数据,因为它的长度是可变的。

+0

非常感谢,我完全失去了,我认为它是hexa,但无法找到将其转换为int的方式。我试了一切,除了十六进制! –