Forums
New posts
Search forums
Members
Current visitors
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Menu
Log in
Register
Install the app
Install
Forums
Archive
Archive
Python
Struct on on x86_64 mac os x
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
[QUOTE="Tommy Grav, post: 3962215"] I have created a binary file that saves this struct from some C code: struct recOneData { char label[3][84]; char constName[400][6]; double timeData[3]; long int numConst; double AU; double EMRAT; long int coeffPtr[12][3]; long int DENUM; long int libratPtr[3]; }; I try to read this file with python (ActiveState 2.6.3 on x86_64 Mac OS X 10.6.1) using the code below the hdrData and constNData are fine, while from the timeData onwards there are obvious problems. The code below works fine for a 32bit binary read with i386 python 2.5.2. Does anyone know what the proper format of a C double and long int is for a x86_64 binary? def read_header(cls): hdrData = "84s"*3 constNData = "6s"*400 timeData = "d"*3 numData = "ldd" coeffData = "3l"*12 denumData = "l" libPtrData = "lll" constData = "400d" hformat = hdrData + constNData + timeData + numData + coeffData + denumData + libPtrData header = struct.unpack(hdrData,cls.JPLeph.read(struct.calcsize (hdrData))) constN = struct.unpack(constNData,cls.JPLeph.read (struct.calcsize(constNData))) # Reading in the time data cls.tstart,cls.tend,cls.tstep = struct.unpack (timeData,cls.JPLeph.read(struct.calcsize(timeData))) # Read in the number of constants and the values for AU and emrat nconst, cls.au, cls.emrat = struct.unpack (numData,cls.JPLeph.read(struct.calcsize(numData))) # Reading in the coefficient pointers cls.coeff = struct.unpack(coeffData,cls.JPLeph.read (struct.calcsize(coeffData))) # Read in the DENUM variable and the libratPtr(3) (cls.denum, ) = struct.unpack(denumData,cls.JPLeph.read (struct.calcsize(denumData))) cls.libPtr = struct.unpack(libPtrData,cls.JPLeph.read (struct.calcsize(libPtrData))) if cls.denum == 405: cls.asize = 1018 elif cls.denum == 200: cls.asize = 826 else: raise ValueError("JPL ephem file is in unknown format %d" % (cls.denum)) Cheers Tommy [/QUOTE]
Verification
Post reply
Forums
Archive
Archive
Python
Struct on on x86_64 mac os x
Top