A Thursday 04 November 2010 13:15:00 Olli Sipilä escrigué:
> Hello,
> I have a problem reading a binary file on OS X 10.6. On my desktop
> mac (OS X 10.4.11, Python 2.5.4, Numpy 1.3.0), the command CELLS,
> NSIZE, NE = fromfile(fp, int32, 3), where fp is the filename,
> correctly prints "21 20 300". However, when I try the above on my
> laptop using Snow Leopard (Python 2.6.6, Numpy 1.5.0), I get the
> numbers "352321536 335544320 738263040". This results in a failure
> when trying to read the data that comes afterwards (Numpy fails with
> "array too big"). I assume this error may have something to do with
> 10.6 being 64-bit and 10.4 being 32-bit; however, the Python 2.6.6.
> distribution is also 32-bit. Any thoughts on this? Thanks,Olli
Yeah. Most probably your Mac has a PowerPC processor, which has a
different byte-ordering than Intel. Look at this:
>>> a = np.int32(21)
>>> a.byteswap()
352321536
>>> a = np.int32(20)
>>> a.byteswap()
335544320
>>> a = np.int32(300)
>>> a.byteswap()
738263040
To solve this, just apply byteswap once more:
>>> a = np.int32(300)
>>> a.byteswap().byteswap()
300
and you are done.
--
Francesc Alted