Дана бинарная строка. В ней каждые 4 символа одно значение типа float в формате big-endian.
$binary_data; // здесь бинарные данные
$data_num = 3800; // целое значение - сколько байт данных
$bts_float = 4; // 4 символа на значение
for ($i = 0; $i < $data_num/$bts_float; $i++) {
$tmpbuffer = '';
$index=$i*$bts_float;
$tmpbuffer .= $binary_data[$index+3];
$tmpbuffer .= $binary_data[$index+2];
$tmpbuffer .= $binary_data[$index+1];
$tmpbuffer .= $binary_data[$index];
array_push($result_array, unpack("f", $tmpbuffer));
}
Пока unpack("G*", $buffer);
хоть как-то терпимо раскрывает, но это только для PHP 7.0+, а для 5.6 только примерным кодом выше.
Ошибка: {"1":-77.17456817626953},{"1":-77.43785858154297},{"1":-79.72053527832031}...
Вопрос: Всё-ли впорядке с кодом? Откуда взялась "1"?
в Python она распаковывается так: struct.unpack('!%df' % block, buffer)
, где block = количество значений / 4, buffer - бинарные данные
Как код написан, так он и работает. Предположу, что результат вы смотрите чем-то на подобии echo json_encode($result_array);
Так вот, если проверить документацию, то можно заметить, что функция unpack
возвращает всегда массив. Есть возможность определить значения ключей массива в строке формата, но если ключи в строке формата не упомянуты - то unpack
будет использовать простой счётчик параметров начиная с 1. Соответственно для строки формата из одного параметра результатом unpack
будет ассоциативный массив с ключом 1
и значением - распакованным значением.
Если вам нужно только одно значение - то его в результат и переносите.
Создаю сущность ORM, делаю все как описано тут и спотыкаюсь на первых шагахСоздаю класс по пути /home/bitrix/www/bitrix/modules/reaction/libs/reaction
ВОт все скриты, и еще не работает маска для телефона, я всё сделал по инструкции ,форма после отправки выдаёт вот такую ошибку Доступ...