“0xFF00”是什么意思?

时间:2014-06-13 18:28:16

标签: java

我在网上发现了类似内容:arrayOfByte[0] = (byte)((paramShort & 0xFF00) >>> 8); 这是什么意思(0xFF00)?

1 个答案:

答案 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是预期的操作。

希望这有帮助。