"0xFF00"是什么意思?

pat*_*csm -3 java

我在网上找到了类似的东西:arrayOfByte[0] = (byte)((paramShort & 0xFF00) >>> 8); 这是什么意思(0xFF00)?

ray*_*ica 10

0XFF00是十六进制的.这是一个基本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
Run Code Online (Sandbox Code Playgroud)

因此,在二进制中,您的号码实际上是:

1111 1111 0000 0000
Run Code Online (Sandbox Code Playgroud)

请记住,这是一个16位或2字节的数字.从二进制转换为十进制为您提供了一个65280的十进制数.在任何情况下,就您的代码而言,paramShort是2个字节.你正在做的是你正在屏蔽数字的低位字节,然后将所有位向右移位8位.基本上,你正在做的是抓住数字中最重要的字节并看看它是什么.

但是,0xFF00在我看来,掩盖使用有点多余.你可以简单地向右移动8位,当你向右移位时,左边的位应该用零填充,所以你只需要通过位移来做同样的事情.我猜测屏蔽是为了确保读者提取MSB是预期的操作.

希望这可以帮助.