所以我给了一个long int = 0x0123456789ABCDEF(64位int),我要提取某个字节。最低有效字节为0,大多数为7.因此,如果我想要第二个字节,它应该只返回AB,如果我想要第5个字节,它应该是45。
int n = 2; //byte I am looking for
long int x;
x = 0x0123456789ABCDEF;
printf("%ld\n", x); //print out initial
n = n * 8; //changing the number so it can be a multiple of 8bits = byte
x = (x >> n) & 0x0000000000FF ; //bit shifting the number right and masking to get AB
printf("%ld\n", x); //print out result
这是尝试获得我想要的结果的正确方法吗?那么实现这一点的好方法是什么,以便代码可以随n?
而改变