$data[0], 'guard_lock' => $data[1], 'rear_wheel_lock' => $data[2], 'backseat_lock' => $data[3], 'lamp_status' => $data[4], 'battery_lock' => $data[5], 'rear_wheel_motion' => $data[6], 'is_motion' => $data[7], 'location_type' => $data[8], 'backseat_status' => $data[9], 'order_status' => $data[10], ]; return $res; } /** * 解析u1 * * @param $u1 * @return array * @author Fx * */ public static function handleU1($u1) { $str2 = base_convert($u1, 16, 2); $u1_bin = str_pad($str2, 8, 0, STR_PAD_LEFT); $data = str_split(str_replace(' ', '', trim($u1_bin))); return array_reverse($data); } /** * 解析u2 * * @param $u2 * @return array * @author Fx * */ public static function handleU2($u2) { $str2 = base_convert($u2, 16, 2); $u2_bin = str_pad($str2, 16, 0, STR_PAD_LEFT); $data = str_split(str_replace(' ', '', trim($u2_bin))); return array_reverse($data); } public static function handleI2($i2) { $str10 = base_convert($i2, 16, 10); if ($str10 > 32767) { return $str10 - (32768 * 2); } else { return $str10; } } /** * 解析u4 * * @param $u4 * @return array * @author Fx * */ public static function handleU4($u4) { // $u4 = hexdec($u4); // $u4_bin = self::decto_bin([$u4], 2); $str2 = base_convert($u4, 16, 2); $u4_bin = str_pad($str2, 32, 0, STR_PAD_LEFT); $data = str_split(str_replace(' ', '', trim($u4_bin))); // var_dump($data); return array_reverse($data); } public static function formatCoordinate($val) { return $val / 1000000; } /** *十进制转二进制、八进制、十六进制 不足位数前面补零* * * @param array $datalist 传入数据array(100,123,130) * @param int $bin 转换的进制可以是:2,8,16 * @return array 返回数据 array() 返回没有数据转换的格式 */ public static function decto_bin($datalist, $bin) { static $arr = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F'); if (!is_array($datalist)) $datalist = array($datalist); if ($bin == 10) return $datalist; //相同进制忽略 $bytelen = ceil(16 / $bin); //获得如果是$bin进制,一个字节的长度 $aOutChar = array(); foreach ($datalist as $num) { $t = ""; $num = intval($num); if ($num === 0) continue; while ($num > 0) { $t = $arr[$num % $bin] . $t; $num = floor($num / $bin); } $tlen = strlen($t); if ($tlen % $bytelen != 0) { $pad_len = $bytelen - $tlen % $bytelen; $t = str_pad("", $pad_len, "0", STR_PAD_LEFT) . $t; //不足一个字节长度,自动前面补充0 } $aOutChar[] = $t; } return $aOutChar; } }