我在网上发现了类似内容:arrayOfByte[0] = (byte)((paramShort & 0xFF00) >>> 8);
这是什么意思(0xFF00)?
答案 0 :(得分:10)
0XFF00
是十六进制的。这是一个base-16系统,其中数字来自0-9
,然后是A-F
。这表示我们的编号系统(基数为10)从0到15。 10
在基数10中实际上是16,其次是11
,即17,依此类推。十六烷基也称为碱基16。
您看到的每个字符都表示为4位,因为我们需要4位来表示基数16中的单个十六进制数。因此,您可以将每个字符分解为4位。假设这是big-endian,你的号码是:
0xFF00 ==>
F - 1111
F - 1111
0 - 0000
0 - 0000
因此,在二进制中,您的号码实际上是:
1111 1111 0000 0000
请记住这是一个16位或2字节的数字。从二进制转换为十进制为您提供了65280的十进制数。在任何情况下,对于您的代码,paramShort
是2个字节。你正在做的是你掩盖数字的低位字节,然后将所有位向右移位8位。实质上,你正在做的是抓住最重要的字节你的号码,看看那是什么。
然而,在我看来,使用0xFF00
进行屏蔽是有点多余的。你可以简单地向右移动8位,当你向右移位时,左边的位应该用零填充,所以你只需要通过位移来做同样的事情。我猜测屏蔽是为了确保读者提取MSB是预期的操作。
希望这有帮助。