位移 - 查找数字中的第n个字节

时间:2016-09-05 08:09:10

标签: c bit bit-shift

所以我给了一个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?

而改变

0 个答案:

没有答案