#include <stdio.h>
int getByte(int x, int n);
int main()
{
int x = 0xAABBCCDD;
int n;
for (n=0; n<=3; n++) {
printf("byte %d of 0x%08X is 0x%08X\n", n
, x
, getByte
(x
,n
)); }
return 0;
}
// extract byte n from word x
// bytes numbered from 0 (LSByte) to 3 (MSByte)
int getByte(int x, int n)
{
return (x >> (n << 3)) & 0xFF;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZ2V0Qnl0ZShpbnQgeCwgaW50IG4pOwoKaW50IG1haW4oKQp7CiAgICBpbnQgeCA9IDB4QUFCQkNDREQ7CiAgICBpbnQgbjsKCiAgICBmb3IgKG49MDsgbjw9MzsgbisrKSB7CiAgICAgICAgcHJpbnRmKCJieXRlICVkIG9mIDB4JTA4WCBpcyAweCUwOFhcbiIsIG4sIHgsIGdldEJ5dGUoeCxuKSk7CiAgICB9CiAgICByZXR1cm4gMDsKfQoKLy8gZXh0cmFjdCBieXRlIG4gZnJvbSB3b3JkIHgKLy8gYnl0ZXMgbnVtYmVyZWQgZnJvbSAwIChMU0J5dGUpIHRvIDMgKE1TQnl0ZSkKaW50IGdldEJ5dGUoaW50IHgsIGludCBuKQp7CiAgICByZXR1cm4gKHggPj4gKG4gPDwgMykpICYgMHhGRjsKfQo=