Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись двоичных данных в файл, можно как-то без pack() ? 
:(
    Опции темы
Igor_K
  Дата 15.8.2009, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



Здравствуйте!

Как записать в двоичный файл нужные мне данные? Например, не используя функцию pack
Есть число большое, не 32 бита, pack не подходит для этого. Как быть?  Например в Си с этим все просто.

И еще строки. Например 10 строк разной длины. Как их записать в двоичном виде? Я что-то не пойму ничего.
Код

$num = array
(
    127,
    23457,
    9843434,
    8,
    1243,
    32423567,
    4294967295,
    6346346
);
$f = fopen('file', 'wb');
foreach ($num as $v)
    fwrite($f, $v, 4);
fclose($f);

Так не работает, записует как текст и считать правильно числа нельзя

Код

$f = fopen('file', 'wb');
foreach ($num as $v)
    $str .= pack("V", $v);
fwrite($f, $str);
fclose($f);

Так работает, но если число больше 4 байт, то нет
PM MAIL   Вверх
nerezus
Дата 15.8.2009, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



отладка.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
youri
Дата 15.8.2009, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



а в каком виде данные, которые надо записать и откуда они беруться?

Это сообщение отредактировал(а) youri - 15.8.2009, 23:27
PM   Вверх
Igor_K
Дата 16.8.2009, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



Цитата(youri @  15.8.2009,  23:22 Найти цитируемый пост)
а в каком виде данные, которые надо записать и откуда они беруться?

Из базы данных, файлов. Обычные числа и строки. Числа надо записывать 8 байтные.

Да и вообще интересует можно ли обойтись без функции  pack()
PM MAIL   Вверх
Ипатьев
Дата 16.8.2009, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



С помощью практически любого языка программирования можно обойтись без готовых функций.
Для этого надо всего лишь представлять себе конечный результат.
PM MAIL   Вверх
Igor_K
Дата 16.8.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



Ипатьев, 
хорошо. Файл, первые 32 байт - 4 8байтные числа. Как их туда записать? От весь конечный результатат который мне нужен smile 
PM MAIL   Вверх
Ипатьев
Дата 16.8.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Нет. Это не называется "конечный результат". 
Конечный результат - это значение каждого байта, которое мы хотим получить. После этого уже можно начинать думать - как его получить.

PM MAIL   Вверх
youri
Дата 16.8.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(Igor_K @  15.8.2009,  18:29 Найти цитируемый пост)
но если число больше 4 байт

Igor_K, а ты сделай var_dump этого числа

а что это за информация и зачем ее в бинарном виде в файл записывать?
PM   Вверх
unicross
Дата 16.8.2009, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 21
Всего: 53



Igor_K, функции serialize() и unserialize() не подойдут?
Код

<?php
$num = array
(
    127,
    23457,
    9843434,
    8,
    1243,
    32423567,
    4294967295,
    6346346
);
$str = serialize($num);
$f = fopen('file.txt', 'w');
fwrite($f, $str);
fclose($f);
print_r(unserialize(file_get_contents('file.txt')));
?>

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0468 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.