“&”运算符在字节到十六进制转换中的作用是什么?
What is the role of '&' operator in byte to hex conversion?
在将字节转换为十六进制时,使用了“&”运算符。我想知道它有什么作用?
byte[] b="ABC".getBytes();
System.out.println(b[1] & 0xFF);
它给出输出 66,因为它是 'B' 的 ASCII 值
欢迎任何帮助。
谢谢
&
运算符(如果用于整数,如 byte、short、int、long)是逻辑与运算符。逻辑与运算符的工作方式如下:
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
此代码与字节到十六进制的转换无关。
b[1]
可以是负数,因为 Java 中的字节值介于 -128 和 127 之间。
b[1] & 0xFF
强制将输出解析为正整数。
例如,如果 b[1]
等于 -14,则 b[1] & 0xFF
将为您提供 242,因为在将两个参数提升为 int
之后执行按位与运算类型,所以当你用0xFF
执行&
时,它的二进制表示是000...00011111111
,你总是会得到一个肯定的结果。
在将字节转换为十六进制时,使用了“&”运算符。我想知道它有什么作用?
byte[] b="ABC".getBytes();
System.out.println(b[1] & 0xFF);
它给出输出 66,因为它是 'B' 的 ASCII 值 欢迎任何帮助。 谢谢
&
运算符(如果用于整数,如 byte、short、int、long)是逻辑与运算符。逻辑与运算符的工作方式如下:
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
此代码与字节到十六进制的转换无关。
b[1]
可以是负数,因为 Java 中的字节值介于 -128 和 127 之间。
b[1] & 0xFF
强制将输出解析为正整数。
例如,如果 b[1]
等于 -14,则 b[1] & 0xFF
将为您提供 242,因为在将两个参数提升为 int
之后执行按位与运算类型,所以当你用0xFF
执行&
时,它的二进制表示是000...00011111111
,你总是会得到一个肯定的结果。