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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> pack & unpack, Перевести строку этой функцией 
:(
    Опции темы
Dr.Death
Дата 5.6.2004, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Решил я хранить данные в бинарном файле, пробовал для начала просто перевести строку в байтовое представление посимвольно с помощью фнукции ord и записать в файл. Записал, но файл так и остался текстовым(windows). Нашел я функцию pack и с помощью нее перевел мое байтовое представление строки с помощью нее в файл. Ура, получилось, файл и вправду стал бинарный, аля exe. И решил я прочитать этот файл и получить обратно строку с помощью unpack, а не получается, вот весь код:
Код

<?
string = "Hello";
$string = strtobin($string);
$string = pack("ix",$string);//получаем бинарное значение
/* Закомментировано, потому что файл уже получил бинарный
$f = fopen("test.bin","w");
fwrite($f,strlen($string).$string);
fclose($f);
*/
$f   = fopen("test.bin","rb");//пробуем извлечь
$cnt = fread($f,1);
$str = fread($f,$cnt);
$x = unpack("c",$str);
foreach($x as $key=>$value) echo $value;//должно посимвольно вывестись hello
fclose($f);
function bintostr($string)
{
for($i = 0;$i <= $string;$I++)
{
$chr = chr($string[$i]);
$str.=$chr;
}
return $str;
}
function strtobin($string)
{
for($i = 0;$i <=strlen($string);$i++)
{
 $byte = ord($string[$i]);
 $result.=$byte;
}
return $result;
}
?>

И вот проблема, обратно мне Hello не выводится.
Если кто знает способ быстрее и с меньшими усилиями, выкладывайте


--------------------
Жизнь коротка, чтобы быть в ней слабым.© Арнольд Шварцнеггер
PM MAIL WWW ICQ   Вверх
Chuck
Дата 14.6.2004, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

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



А почему бы serialize() не использовать???
Потому что параметры не задал для unpack...
PM MAIL WWW GTalk   Вверх
Secandr
Дата 15.6.2004, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



Код
<?
$s="437829508";
$b=pack('i',$s);
print "pack:$b<br>";
$s=unpack('i',$b);

print join('',$s);

?>

Это пакуются числа.

Кстати, запаковать буквы нельзя, даже в exe файлах строки остаются без изменений.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0656 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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