我给出了在原始文件中呈现为int的32位数字。我需要一个值中最右边的8位(0-7),而另一个值需要下一个最右边的8位(8-15)。我被告知要使用位掩码和位移来排除这一切,但我不知道它如何与整数一起工作。
答案 0 :(得分:1)
要只获得最右边的8位,你可以
int right8 = mynum & 0xFF;
因为您将前24位设为0,所以这些将设置为0,而底部8将保留其值,因为它们将以1为单位。
为了获得下一个最右边的8个,你需要在位掩码中将第8-15位设置为1,将所有其他设置为零。这将保持位置8-15中的相同位,但由于您需要它们位于最后8位,您可以简单地将它们向右移位8位。你可以用以下方法做到这一点。
int next8 = myNum & 0xFF00;
int next8 = next8 >> 8;