[Numpy-discussion] problem with a binary file on OS X 10.6

Francesc Alted faltet@pytables....
Thu Nov 4 07:33:48 CDT 2010


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


More information about the NumPy-Discussion mailing list