[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Whats up in opening files: Unix vs. Windows

> I use this code on a Unix System and it has been working fine for 4 

> file_header={file_header, nblocks: 0L, ntraces: 0L, np: 0L, ebytes: 0L,
> tbytes: 0L, bbytes: 0L, transf: 0, status: 0, spare1: 0L}
> data_header={data_header, scale: 0, status: 0, index: 0, spare3: 0, 
> 0L, lpval: 0.0, rpval: 0.0, lvl: 0.0, rvl: 0.0}

> ;----Open the data file
> openr, unit, infile, /get_lun    ; Open file
> point_lun, unit, 0
> readu, unit, file_header     ; Read the file header (only occurs once)

> help, file_header, /st

[ code snipped]

> ** Structure FILE_HEADER, 9 tags, length=32:
>    NBLOCKS         LONG           3276800
>    NTRACES         LONG          16777216

> Should be more like 164 and 220.
> Is there a differnce in 0L in Windows and Unix ?? Or structures, or 
> lese?

Well, if we believe what RSI tell us then the size of LONG on all
platforms is 32bits. But the byte ordering may not be the same.

I presume the data files are written big-endian and you are reading
them on Windows which runs on little-endian hardware. If that's
the case you will certainly need to byte-swap. But that won't get
you the numbers you expect.

The value for NBLOCKS you have above is 3276800, which in hex is 
0x00320000. Byte swapping gives 0x00003200 which converts back to
12800 decimal. 

Similarly, NTRACES byte-swapped is 1 so there's maybe more going
wrong than just endian-ness problems.

Nigel Wade, System Administrator, Space Plasma Physics Group,
            University of Leicester, Leicester, LE1 7RH, UK 
E-mail :    nmw@ion.le.ac.uk 
Phone :     +44 (0)116 2523568, Fax : +44 (0)116 2523555