2016-01-08 145 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的方式。我試了一切,除了十六進制! –