This question already has answers here:
What does value & 0xff do in Java?
                                
                                    (4个答案)
                                
                        
                                4年前关闭。
            
                    
代码的目的是从数据库中读取数据,但我不知道“ i [1] = data [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;

最佳答案

getBinaryStream() doc


  检索此Blob实例指定的BLOB值作为流。


返回值:


  包含BLOB数据的流。


十六进制文字0xFF的整数值等于255。Java将int表示为32位。

0xFF的二进制值


  0xFF = 00000000 00000000 00000000 11111111


number & 0xff reference

&运算符执行bitwise AND操作。 data[1]& 0xff将为您提供带位模式的整数。

&运算符的规则是


  1&0 = 0
  
  1&1 = 1
  
  0&0 = 0
  
  0&1 = 0


因此,当对任何数字使用此&进行0xFF运算时,它都会使0全部变为,但仅保留最后8位中的值。

例如,1011011100001101的按位与是00000101


  10110111
  
  和
  
  00001101
  
  =
  
  00000101

关于java - 我不知道“i [1] = data [1]&0xff;”的意思。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35098933/

10-12 00:13