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; // ??
}