在C中提取字节

我正在用C语言制作一个程序。我要提取字节。 un8 extractbyte (int r, int pos)应该从数字r返回字节数pos。 例如,我用作输入: 0x7788AABB 。 那么输出应该是:

零件号0是BB
第1部分是AA
第2部分是88
第3部分是77

我被困在程序的最后部分,我在评论中添加了问号。 这些线路不正确,我对如何使其工作感到困惑…我现在得到的输出是每个部分的bb。 顺便说一句,我在C方面很陌生。

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

 un8 extractbyte(un32 r, un8 pos) { return (r >> (8 * pos)) & 0xFF; } 

我会使你的extractbyte函数像这样。

 int extractbyte(int n, int pos) { return (n >> (pos * 8)) & 0xff; } 
 #include  char extractbyte(int number, int v) { char *x=(char *)&number; return x[3-v]; } int main() { int n=0x7788aabb; int i; for (i=0; i<4; i++) { printf("%d) %x\n",i,(unsigned char)extractbyte(n,i)); } return 0; }