Mail Archives: djgpp/1999/08/14/17:12:17
Chris Holmes wrote:
> Endlisnis wrote:
> >
> > But, your code did the same thing, it casted it as a short* (which you stored in a
> > temporary variable) and then augmented it with an offset. You code would do the EXACT
> > same thing as mine on any and all machines. Both mechanisms were interpreting the int in
> > a 'native' way. What I was trying to say, was that if the file was saved in a big-endian
> > machine and you were using a little-endian machine... both of our codes would not work.
>
> Yes, BUT if you RECOMPILED my code with a big-endian compiler, it
> would at least in theory produce the right output. My code put the
> work for conversion on the compiler's head, so if I moved to a
> big-endian compiler, then I wouldn't have to change my code.
char*Buff;
Your code:
short* int_buff = (short*)buff;
int val = int_buff[8];
My code;
int val = *(short*)(Buff+8);
//I don't remember if the index really was '8' but that's not the point.
My code, if compiled on a big-endian compiler, would also produce the right output (if the
buffer was written by a big-endian program). The only way to make it really endian safe, would
be to use one of the POSIX function that comes with tcp/ip libraries which converts local
format to big-endian format. It is designed to be portable.
--
(\/) Endlisnis (\/)
s257m AT unb DOT ca
Endlisnis AT HotMail DOT com
ICQ: 32959047
- Raw text -