Re: Byte ordering and array access
- From: "stathis gotsis" <stathisgotsis@xxxxxxxxxxx>
- Date: Fri, 10 Feb 2006 22:21:14 +0200
"Benjamin M. Stocks" <stocksb@xxxxxxxx> wrote in message
news:1139413176.945111.100840@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Hello all,
I've heard differing opinions on this and would like a definitive
answer on this once and for all. If I have an array of 4 1-byte values
where index 0 is the least signficant byte of a 4-byte value. Can I use
the arithmatic shift operators to hide the endian-ness of the
underlying processor when assembling a native 4-byte value like
follows:
unsigned int integerValue;
unsigned char byteArray[4];
/* byteArray is populated elsewhere, least signficant byte in index 0,
guaranteed */
integerValue = (unsigned int)byteArray[0] |
((unsigned int)byteArray[1] << 8) |
((unsigned int)byteArray[2] << 16) |
((unsigned int)byteArray[3] << 24);
So if byteArray[0] was 0x78, byteArray[1] was 0x56, byteArray[2] was
0x34 and byteArray[3] was 0x12 then would integerValue be 0x12345678 no
matter the endian-ness of the processor?
May i ask a question on this? Can the endian-ness of the processor affect
the "<<" shifting direction? From the replies i assume it does. I need an
example where this operator shifts to the right.
.
- Follow-Ups:
- Re: Byte ordering and array access
- From: Vladimir S. Oka
- Re: Byte ordering and array access
- References:
- Byte ordering and array access
- From: Benjamin M. Stocks
- Byte ordering and array access
- Prev by Date: Re: How do i set zero as a Integer?
- Next by Date: Re: How do i set zero as a Integer?
- Previous by thread: Re: Byte ordering and array access
- Next by thread: Re: Byte ordering and array access
- Index(es):
Relevant Pages
|