[Numpy-discussion] problem with a binary file on OS X 10.6
Christopher Barker
Chris.Barker at noaa.gov
Fri Nov 5 11:50:08 EDT 2010
On 11/4/10 5:15 AM, Olli Sipilä wrote:
> 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?
you've specified int32, so 32-64 bit should not be the issue. however,
it's likely that endian issues are -- is one of your machine PPC, and
one Intel?
yup, that's it:
In [29]: a = np.array((21, 20, 300), dtype=np.int32)
In [30]: a
Out[30]: array([ 21, 20, 300])
In [31]: a.byteswap()
Out[31]: array([352321536, 335544320, 738263040])
So, you can either call bytswap yourself, or, better yet specify the
endianness in your dtype specifier, somethign like (untested)
dtype='>i4' for big endian and dtype='>i4' for little endian. Intel is
little endian, PPC is bigendian (I think -- do test to make sure!)
-Chris
--
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
More information about the NumPy-Discussion
mailing list