代码的目的是从数据库中读取数据,但我不知道" I [1] =数据[1]&安培; 0xff的;"在getBinaryStream(1)中,什么是' 1'意思?
if(rs.next())
{
InputStream in=rs.getBinaryStream(1);//what the mean of the code?
byte[] data = StreamTool.readInputStream(in);
int[] i =new int[12];
i[1]=data[1]& 0xff;//what the mean of the code?
i[4]=data[4]& 0xff;//what the mean of the code?
i[7]=data[7]& 0xff;//what the mean of the code?
i[10]=data[10]& 0xff;//what the mean of the code?
int a=3*(port1-1)+1;
int b=3*(port2-1)+1;
答案 0 :(得分:1)
您正在将字节数据转换为整数。 “& 0xff”
将有效地屏蔽变量,因此它只留下最后8位的值,并忽略所有其余位。
在这里解释得非常好, What does value & 0xff do in Java?
答案 1 :(得分:1)
请将此link引用到getBinaryStream(...)
现在,data[1]& 0xff
意味着,
在Bitwise AND operator('&') operation goes to perform.
然后更接近地说,
data[1]& 0xff
表示,假设data[1]
返回某些值假设:255
和0xff is hexa-decimal value
,它的等效十进制值是:255
。
所以最后这个操作同样执行,
255 (11111111)
&255 (11111111)
-----------
11111111 : 255(decimal)
请记住这对于按位AND操作,
1& 1 = 1
1& 0 = 0
0& 1 = 0
0& 0 = 0
在这种情况下,在你的情况下,同样的事情,即按位与运算。 如果有任何疑问,请告诉我。
答案 2 :(得分:0)
以流的形式检索此Blob实例指定的BLOB值。
<强>返回:强>
包含BLOB数据的流。
十六进制文字0xFF
是一个相等的int值255.Java表示int
为32位。
二进制值0xFF
0xFF = 00000000 00000000 00000000 11111111
&
运算符执行bitwise AND
运算。 data[1]& 0xff
会给你一个带位模式的整数。
&
运营商的规则是
1和0 = 0
1&amp; 1 = 1
0&amp; 0 = 0
0安培; 1 = 0
因此,如果对&
执行0xFF
任何数字,它将使0
为全部,但只留下最后8位的值。
例如,10110111
和00001101
的按位AND为00000101
。
10110111
&安培;
00001101
=
00000101