In <Pine.LNX.4.10.10001232330040.5613-100000@xxxxxxxxxxxxxxxxxx> Stanislav Malyshev a.k.a Frodo (frodo@xxxxxxxxxxxx) wrote:
VK>>> чтения из файла записи вроде struct { int a; char b[8]; long c;
VK>>> short int d[6]};
SF> class struct {
SF> var $a;
SF> var $b;
SF> var $c;
SF> var $d;
SF> function struct() { // constructor
SF> $this->a=1;
SF> $this->b=range(1,8); // 8 integers
SF> $this->c=100000;
SF> $this->d=range(1,6); // 6 integers
SF> }
SF> }
SF> $foo = new struct();
SF> $fp = fopen("file","w");
SF> fputs($fp,serialize($foo));
SF> fclose($fp);
SF> $fp = fopen("file","r");
SF> $bar = unserialize(fgets($fp,4096));
SF> fclose($fp);
SF> var_dump($bar);
Але. Может я и тупой, но я никак не могу понять - чем у тебя b от d отличается
(а b должна быть char b[8], в то время как d - short d[6]). И, кроме того,
кажется, serialize/unserialize еще "от себя" щедрой рукой всякого добавит ...
А задача состояла вовсе не в том, как подобную структуру сохранить и потом
считать, а в том, чтобы разобрать файл с заранее описанной структурой.
Как будто это очень просто делается где-то, кроме как в "C" (да еще нужно
учесть, что разные версии "C" могут иметь разные идеи о том, какой размер
у int'а и long'а, так что и в "C" это, в общем-то, не делается). Конечно
считать строку в 28 байт (если мы говорим об gcc для iX86) и разобрать ее
можно и в PHP и в Perl'е и в других скриптовых языках без проблем (даже в
bash'е :-)
=============================================================================
= Apache-Talk@xxxxxxxxxxxxx mailing list =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.