Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Формирование пакета бинарных данных.


Автор: Coder 26.9.2008, 06:04
1. Как сформировать пакет с бинарными данными в памяти?
2. Закодировать его Base64.
3. Отправить клиенту.

У меня есть структура:
{
char *name;
int x;
int y;
}

Параметры name, x, y я получаю из БД. Как мне их записать в буфер без преобразования чисел (x,y) в строку?

Автор: skyboy 26.9.2008, 08:45
Цитата(Coder @  26.9.2008,  05:04 Найти цитируемый пост)
У меня есть структура:
{
char *name;
int x;
int y;
}

ну, это ж Си-шный код. разделом точно не ошибся?  и в какой буфер ты собираешься их запихивать?

Автор: Coder 26.9.2008, 08:54
Цитата(skyboy @  26.9.2008,  16:45 Найти цитируемый пост)
ну, это ж Си-шный код. разделом точно не ошибся? 

Нет, это всего лишь пример типизации, которая мне нужна. 

Цитата(skyboy @  26.9.2008,  16:45 Найти цитируемый пост)
 и в какой буфер ты собираешься их запихивать?

В этом и вопрос. Можно ли создать средствами PHP такой буфер в который бы помещались значения чисел, а не их строковые эквиваленты. Если у меня есть число типа int  - 51234. Мне нужно чтобы оно записалось в этот буфер  как 0x22c80000, а не как строка "51234".

Автор: MoLeX 26.9.2008, 09:46
нет такого...

Добавлено через 26 секунд
100% не уверен, но еще не встречал не где

Автор: Coder 26.9.2008, 11:52
Ладно, будем искать другие пути...

Автор: Diabolus 27.9.2008, 02:32
О стандартных не слышал, но что мешает использовать dechex(), после чего объединять два байта в один, а далее - chr()?
Хотя, это только для отдельных числовых строк. Если знаешь размерность переменных, то можно просто слепить их все вместе, а потом таким же образом разлепить. Если знаешь асм, то вспомни, как там идёт работа со структурами. Возможно, поможет :) В сях просто всё не так наглядно.

Автор: Coder 28.9.2008, 12:57
Diabolus, ну это же все равно строки будут.

Автор: Sunvas 28.9.2008, 16:23
Цитата(Coder @  28.9.2008,  12:57 Найти цитируемый пост)
Diabolus, ну это же все равно строки будут.

А как ты клиенту собираешься это отдавать? - Только в виде строки.

Автор: BrainWorker 28.9.2008, 21:00
http://ru.php.net/manual/en/function.serialize.php

http://ru.php.net/manual/en/function.unserialize.php

Автор: nerezus 28.9.2008, 21:56
Цитата

Можно ли создать средствами PHP такой буфер в который бы помещались значения чисел, а не их строковые эквиваленты. Если у меня есть число типа int  - 51234. Мне нужно чтобы оно записалось в этот буфер  как 0x22c80000, а не как строка "51234".
 http://php.net/pack

Автор: bobik02 28.9.2008, 22:04
Разрешите поинтересоваться зачем это Вам нужно ? 

Автор: Coder 29.9.2008, 05:05
Цитата(Sunvas @ 29.9.2008,  00:23)
Цитата(Coder @  28.9.2008,  12:57 Найти цитируемый пост)
Diabolus, ну это же все равно строки будут.

А как ты клиенту собираешься это отдавать? - Только в виде строки.

Да, но уже после кодировки бинарных данных (из буфера) алгоритмом base64.

Добавлено через 2 минуты и 10 секунд
Цитата(bobik02 @ 29.9.2008,  06:04)
Разрешите поинтересоваться зачем это Вам нужно ?

Хочу использовать apache+php для своих нужд (в общем это будет не web сервер).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)