From: ts Date: 2006-02-22T19:10:02+09:00 Subject: Re: Question about String.unpack >>>>> "E" == Eric Hodel writes: >> My C compiler gives me a total sizeof of 48, so i use a >> fd.sysread(48).unpack(A32dIC) to re-read. But that seems rather E> Your struct says char name[30] not 32... Yes, but there is alignement He just want Z32 rather than A32 biocluster1% cat a.c #include #include typedef struct { char name[30]; double size; int age; char stuff; } enreg_t; main() { FILE *fd; enreg_t enreg; strcpy(enreg.name, "abc"); enreg.size = 12.0; enreg.age = 12; enreg.stuff = 'a'; fd = fopen("aa", "w"); fwrite(&enreg, sizeof(enreg), 1, fd); fclose(fd); } biocluster1% biocluster1% ruby -e 'p a = IO::read("aa"); p a.unpack("Z32dIC")' "abc\000\030\373\377\277U\203\004\010tp\001@\360z\001@8\373\377\277K\205\004\010\200\270\024@\000\000\000\000\000\000(@\f\000\000\000ae\001@" ["abc", 12.0, 12, 97] biocluster1% Guy Decoux