comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: read a C written binary file with IDL
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: read a C written binary file with IDL [message #79340 is a reply to message #79229] Mon, 20 February 2012 17:49 Go to previous message
Thibault Garel is currently offline  Thibault Garel
Messages: 55
Registered: October 2009
Member
Hi,

sorry to reply so late, but I was away recently.

First, as the issue seems to be more complicated than i first thought,
i have to say that the structure i have to read is bigger than what I
wrote previously just to make an example.

It actually contains (in the right order):
int x 1
long long x 1
int x 5
float x 9
int x 1
float x 24

that is, 7 int, 33 float and 1 long long (written in C).

When I look at the IDL commands you suggest, i get:

print,n_tags(mystruct,/length) 176

print,n_tags(mystruct,/data_length) 172

So you were right.

Now, the question is "How to handle that?? " :)

I inserted an extra int (0L) in the structure of my IDL reading
routine in second position of the structure (just before the long
long), and it gives results coherent with what one gets with a correct
Python routine. However, I am not quite satisfied with this
solution...

Does anyone can think of a better way to proceed?

Thanks !!



>
>
>
> Bill Nel wrote:
>> On Feb 9, 11:56 pm, Manodeep Sinha <manod...@gmail.com> wrote:
>>> Hi,
>
>>> This is because C pads the structure to produce alignments. Under
>>> 'normal' operations, you would expect MyStruct to be 20 bytes,
>>> however, if you do a sizeof(struct MyStruct), you will probably see
>>> that the size is 24. (And you can enable the warning for gcc by using
>>> the compile time option -Wpadded).
>
>> The N_TAGS() function has LENGTH and DATA_LENGTH keywords:
>
>> IDL> print, n_tags(mystruct, /length)
>>           24
>> IDL> print, n_tags(mystruct, /data_length)
>>           20
>
>> I mention it because one might not think to look at the N_TAGS
>> function
>> for this sort of information.
>
>> --Wayne
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: tracking clusters through multiple timesteps
Next Topic: Making a html image map?

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Fri Oct 10 06:54:54 PDT 2025

Total time taken to generate the page: 0.64781 seconds