Wyodrębnianie bajtów w C

Tworzę program w C. Mam wyodrębnić bajty.un8 extractbyte (int r, int pos) powinien zwrócić numer bajtu pos z numeru r. Jako przykład używam jako danych wejściowych:0x7788AABB. Wyjście powinno być wtedy:

Numer części 0 to BB
Część 1 to AA
Część numer 2 to 88
Część numer 3 to 77

Utknąłem w ostatniej części programu, w której umieściłem znaki zapytania w komentarzach. Te linie nie są w porządku i jestem zdezorientowany tym, jak powinienem sprawić, żeby to zadziałało ... Wyjście, które teraz otrzymuję, to bb w każdej części. Przy okazji, jestem całkiem nowy w C.

#include <stdio.h>
#include <stdlib.h>

typedef unsigned int  un32;
typedef unsigned char  un8;

un8  extractbyte  (un32  r, un8  pos);

int main ()
{
    un32  number;
    un8     k;

    printf("Enter a number:\n");
    scanf("%x",&number); 

    for (k=0; k<=3;k++)
        printf ("Part number %d is:  %x \n", k , extractbyte(number, k) );

    return 0;
}

un8 extractbyte  (un32  r ,  un8  pos)
{
    un32  mask;
    un32 size = pos*8;
    un32; // ??
    un8; // ??

    return (un8)  r; // ??
}

questionAnswers(3)

yourAnswerToTheQuestion