'&'的作用是什么?字节到十六进制转换的运算符?

时间:2015-12-24 13:30:42

标签: java hex byte bytearray

将字节转换为十六进制时,使用'&'运营商。我想知道它的作用?

byte[] b="ABC".getBytes();
System.out.println(b[1] & 0xFF);

它给出输出66,因为它是'B'的ASCII值 欢迎任何帮助。 感谢。

2 个答案:

答案 0 :(得分:1)

此代码与字节到十六进制转换无关。

b[1]可以为负数,因为Java中的字节值介于-128到127之间。

b[1] & 0xFF强制将输出解析为正整数。

例如,如果b[1]等于-14,b[1] & 0xFF会给你242,因为在两个参数被提升为int类型之后执行逐位AND,因此,当您使用&执行0xFF时,其二进制表示形式为000...00011111111,您将始终获得正面结果。

答案 1 :(得分:0)

&运算符(如果在整数上使用,如byte,short,int,long)是Logic-AND运算符。逻辑AND运算符如下所示:

  0 1 1 0 0 1 0 1
& 1 0 1 1 0 0 0 1
-----------------
  0 0 1 0 0 0 0 1

这是2位数的二进制表示法的逐位比较。如果两个位都为1,则结果为1,否则将导致0:

& || 0 | 1   <- a
===========
0 || 0 | 0
===========
1 || 0 | 1
^
b