My endianness link was a little vague.
Code:
#include <stdio.h>
int main(void)
{
unsigned char b[] = {0x12,0x34,0x56,0x78};
unsigned long value = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
printf("value = 0x%08lX\n", value);
return 0;
}
/* my output
value = 0x12345678
*/
Code:
#include <stdio.h>
int main(void)
{
unsigned char b[] = {0x12,0x34,0x56,0x78};
unsigned long value = (b[3] << 24) | (b[2] << 16) | (b[1] << 8) | b[0];
printf("value = 0x%08lX\n", value);
return 0;
}
/* my output
value = 0x78563412
*/
Results may vary depending on the endianness of the target.