![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Agent_00 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 15.2.2007 Репутация: нет Всего: нет |
Доброе время суток, столкнулся с такой проблемой, есть двоичный файл, который записан с помощью с++ по структуре:
хочу прочитать этот файл с помощью php, делаю так:
получаю совершенно не то что нужно, почитав про функцию UNION понимаю, что память выделяется только под самую большую переменную в union, и значение учитывается только одно, тогда попробовал сделать так:
опять получаю не то что нужно. Подскажите как правильно прочитать такой файл в php и получить структуру со значениями |
||||||
|
|||||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 5 Всего: 39 |
Может проще будет сделать расширение php на C++ и с помощью него прочитать и передать данные в php?
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
что-то вроде такого. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Agent_00 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 15.2.2007 Репутация: нет Всего: нет |
Pfailed может быть и проще, но все модули написаны на php.
ksnk если честно немного не понятно как это так:
квадратные скобки ставить функции вроде бы нельзя, проверил, действительно ругается на синтаксис. Попробовал убрать квадратные скобки, получается не то что нужно.
тут скорее всего вместо СС -> S/S Как я понял идея такая, что мы 4 байта, выделенных на юнит, распаковываем для каждой переменной из структуры? |
||||
|
|||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Ну да. В результате unpack получается массив и выборка должна была-бы вернуть первый элемент... Более работоспособным может быть такой вариант
Хотя, вероятно, более читабельным будет сочинить функцию, выковыривающую нужное значение по нужному смещению... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 5 Всего: 11 |
|
|||
|
||||
| Agent_00 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 15.2.2007 Репутация: нет Всего: нет |
ksnk если брать как 0 элемент от массива result, то в нем ничего нет, но есть в 1 элементе массива, но если брать его, то получится что одно и тоже значение будет представлено в разных типах, а если типы одни (как во втором юните) - будут одинаковые значения и не понятно к чему они относятся. Может кто знает другой вариант?
Absinthe
не вижу смысла писать дополнительное ПО ради импорта данных и передачу его в php, когда весь код проекта написан на php. Искал может возможен импорт си'шных функций в php, но сколько не искал, пишут что нельзя, поэтому и возникает вопрос, как эту структуру изъять из файла с помощью языка php. Это сообщение отредактировал(а) Agent_00 - 7.8.2011, 17:45 |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 5 Всего: 39 |
Насколько понимаю то, что окажется в файле после fwrite сильно зависит от компилятора и архитектуры. Например long на 32 битной архитектуре 32 бита, а на 64 битной 64. Поэтому не советую этим заниматься. Пусть ваша C++ программа одназначно сериализует данные прежде чем писать их в файл.
|
|||
|
||||
| Agent_00 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 15.2.2007 Репутация: нет Всего: нет |
Pfailed она однозначно пишет под 32 бита, программа кем то писанная под дос еще. Все что мне от нее нужно это прочитать генерируемый ею файл, по этой структуре.
|
|||
|
||||
| Agent_00 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 15.2.2007 Репутация: нет Всего: нет |
Проблему решил, спасибо всем кто помог, тему можно закрывать.
Решение:
В зависимости, по какому принципу был записан файл на с++, по такому же принципу нужно распаковывать его в php. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |