JT808協(xié)議解析01

總體解析流程 (以經(jīng)緯度為例)


1.通過 == bin2hex() == 方法, 將接收到的內容從ASCII字符轉換為16進制的字符串(如:7e0200***)
2.將字符串已兩個為一組分隔成字節(jié)數(shù)組,如: ['7E', '02', '00' ...], 這里對粘包需要特殊處理
3.選取下標為21-24的4組作為經(jīng)度, 25到28的4組作為緯度
4.對經(jīng)緯度解析: 如 01 5a 49 ea

// 1.先是將16進制轉換為10進制
$a = base_convert("01", 16, 10); // => 1
$b = base_convert("5a", 16, 10); // => 90
$c = base_convert("49", 16, 10) ; //=> 73
$d = base_convert("ea", 16, 10); // => 234
// 2.將結果位運算后相加 (第一個左移24次, 第二個左移16次, 第三個左移8次, 第四個不變)
$result = ($a << 24)  + ($b << 16) + ($c << 8) + $d

左移: 二進制世界里往左移動其實是相當于乘以了2
等同于: $result = (1 << 24)  + (90 << 16) + (73 << 8) + 234
等同于: $result = (1 * 2 ^24)  + (90 * 2^16) + (73 * 2 ^8) + 234
等同于: $result = 16777216  + 5898240 + 18688  + 234

$result = 22694378
除以10^6 即是 22.694378 , 北緯 22.69°附近
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容