Czy da sie przerzutowac char[4] na int?

0

Witam, mam taki oto fragment kodu:

fgets(bmp_head.bfSize, 4+1, fp); //gdzie bmp_head.bfSize to char[4]
printf("bfSize: %d(%.2x %.2x %.2x %.2x)\n", (int)bmp_head.bfSize, bmp_head.bfSize[0], bmp_head.bfSize[1], bmp_head.bfSize[2], bmp_head.bfSize[3]); //a tutaj najpierw staram sie wyswietlic to jako int, a potem dla latwiejszego debugowania w hex

Wszystko byłoby ładnie, pięknie, gdyby nie to, że wyniki mam z kosmosu.. Trzy przykładowe odpalenia programu:

# ./a.out 
bfSize: -1016827086(76 58 02 00)
# ./a.out 
bfSize: 71549698(76 58 02 00)
# ./a.out 
bfSize: -2108908222(76 58 02 00)

Ktoś mógłby mi podpowiedzieć co robię źle?

1
union int4char
{
   int intVal;
   unsigned char charVal[sizeof(int)];
};

int main()
{
   union int4char ic;
   ic.intVal = 45454;
   printf("%x %x %x %x\n", ic.charVal[0], ic.charVal[1], ic.charVal[2], ic.charVal[3]);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1