请看一下我的功能:
int getByte(int x, int n) {
int oneOnes = 255 << ( n << 3);
int compute = oneOnes & x;
//FIND A WAY TO RETURN CHAR (NOT INT)
char result = (compute >> (n << 3));
return result;
}
在评论之前,一切都很好。也就是说,我从一个整数开始x
,我只想取某个小节(由 指定n
)。所以我所做的就是把除了我想保持为零的 8 位之外的所有东西都做完。例如,如果输入是:
1001011 10011011 00101011 01001011
我只想保留第三组位(从右数),那么结果将是:
00000000 10011011 00000000 00000000
所以我成功地做到了这一点。问题是,我只需要返回我想要的位(将零裁剪为 a char
)。尽管创建char result
并返回它,但返回的仍然是 32 位值。
有什么帮助吗?谢谢!
明确一点:对于00000000 10011011 00000000 00000000
,我只想被 10011011
退回。
谢谢!