我正在用 C 编写一个程序。我要提取字节。un8 extractbyte (int r, int pos)
应该从数字 r 返回字节数 pos。例如,我使用作为输入:0x7788AABB
。那么输出应该是:
零件号 0 是 BB
零件号 1 是 AA
零件号 2 是 88
零件号 3 是 77
我被困在程序的最后一部分,我在评论中添加了问号。这些行不正确,我对如何使其工作感到困惑......我现在得到的输出在每个部分都是 bb 。顺便说一句,我在 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; // ??
}
un8 extractbyte(un32 r, un8 pos)
{
return (r >> (8 * pos)) & 0xFF;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)