我试图把11个MSB位,并得到他们的价值是这样的:拿几个最高位从int
value = lineIntData & 0xFFE00000 >> 21;
lineIntData是一个数字的8个十六进制数字。
我不明白的是为什么我收到编译错误说"Cannot Implicitly convert Long to Int"
。如果我从十六进制掩码中取出一位数字(从而使其为7位数字),或者如果我将int从int
更改为long
,错误消失。
为什么我甚至会得到这个错误?是不是一个十六进制数字需要4位,这意味着8位数字是32位,所以它应该都适合一个Int32?如果我做错了,那么我怎样才能取得11个数字的值呢?
尝试'unsigned int'而不是'int' – Dialecticus
Jon Skeet是这里的专家(* C *的专家),所以他的解决方案最有可能比我所能达到的更准确。我并不确定演员的位置,因此写在评论中而不是答案中。 – Dialecticus