在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; }