php unpack () с H * или bin2hex () для удаления ведущих нулей

У меня есть некоторые двоичные данные с ведущими нулевыми байтами, но когда я распаковываю эти данные и выгружаю их как шестнадцатеричную строку, я, кажется, потерял эти байты. Что я делаю неправильно?

Подробнее …

Я интегрирую данные устройства GPS в php.

Данные, поступающие на устройство в двоичном формате, и я использую

$arr = unpack("H*", $input);

Я получаю данные как

01aa08080000014b27163dfc00328e2c950d3edc0a00c2010b0f000e00080301010200f00103091f4542374318000e01c700000004014e00000000000000000000014b271645cc00328e29110d3edc4e00c301160f001000080301010200f001030920814236e818001001c700000008014e00000000000000000000014b2716518400328e24e10d3edc8700c301040e000800080301010200f00103091f8242371518000801c70000000d014e00000000000000000000014b2716a40400328e21510d3edd5c00c6013a0e000800080301010200f00103091f3d4236bc18000801c700000001014e00000000000000000000014b2717dd5600328e1e060d3edd1300cd01080d0000fa090401000200f000fa000309000e4232e718000001c700000000014e00000000000000000000014b2719b86000328e1e060d3edd1300d001080d000000050301000200f0000209001142328b00000000014b271b8fb400328e1e060d3edd1300d001080d000000050301000200f0000209001142327200000000014b271d69b000328e1e060d3edd1300d001080d000000050301000200f0000209001142325e0000080000a771

or

2d08010000014b275faaa000328e1e060d3edd1300d001080d000000050301000200f000020900124231e400000100002144

Это неправильный формат данных, так как все ведущие нули удалены.
Согласно интеграционному документу, данные начнутся с

Four zero bytes (0x00)

4B AVL Data Length in the format 0000xxxx

Правильный формат предыдущих 2 данных должен был быть

00000000000001aa08080000014b27163dfc00328e2c950d3edc0a00c2010b0f000e00080301010200f00103091f4542374318000e01c700000004014e00000000000000000000014b271645cc00328e29110d3edc4e00c301160f001000080301010200f001030920814236e818001001c700000008014e00000000000000000000014b2716518400328e24e10d3edc8700c301040e000800080301010200f00103091f8242371518000801c70000000d014e00000000000000000000014b2716a40400328e21510d3edd5c00c6013a0e000800080301010200f00103091f3d4236bc18000801c700000001014e00000000000000000000014b2717dd5600328e1e060d3edd1300cd01080d0000fa090401000200f000fa000309000e4232e718000001c700000000014e00000000000000000000014b2719b86000328e1e060d3edd1300d001080d000000050301000200f0000209001142328b00000000014b271b8fb400328e1e060d3edd1300d001080d000000050301000200f0000209001142327200000000014b271d69b000328e1e060d3edd1300d001080d000000050301000200f0000209001142325e0000080000a771

and

000000000000002d08010000014b275faaa000328e1e060d3edd1300d001080d000000050301000200f000020900124231e400000100002144

Обратите внимание на начальные нули 4B и длину данных 4B с дополнением нулями.

когда я использую

$arr = bin2hex($value)

это дает мне тот же результат.

Но я уверен, что данные есть в двоичном файле, и я не могу отобразить ведущие нули.

Пожалуйста помоги.

заранее спасибо

0

Решение

При просмотре кодов заметил, что я делаю двоичные данные.

$input = trim($input);

который создал проблему.

Прокомментировал код и распаковка вернула точный необходимый формат

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]