我知道你可以通过使用获得第一个字节
int x = number & ((1<<8)-1);
Run Code Online (Sandbox Code Playgroud)
要么
int x = number & 0xFF;
Run Code Online (Sandbox Code Playgroud)
但我不知道如何获得整数的第n个字节.例如,1234是00000000 00000000 00000100 11010010作为32位整数如何获得所有这些字节?第一个是210,第二个是4,最后两个是0.
我有兴趣编写一个getMyByteChunkFunction接受两个参数的函数- 一个32位整数和一个字节偏移量(0,1,2或3),然后从32位整数中返回相应的字节.例如,给定此整数:
(3) (2) (1) (0) ---byte numbers
int word = 10101010 00001001 11001010 00000101
Run Code Online (Sandbox Code Playgroud)
函数调用getMeByteChunkFunction(word, 2)返回00001001.
但是,我可以使用的按位运算符有限.我只允许使用>>,<<以及只有一个减法.我知道如何使用AND和XOR来做到这一点,但我不知道我在这里如何使用减法.有任何想法吗?