可以的
可以先把int转成byte[]
int  i=99999;  
byte  []b=new  byte[4];  
b[0]=(byte)(i&oxff);  
b[1]=(byte)(i>>8&oxff);  
b[2]=(byte)(i>>16&oxff);  
b[3]=(byte)(i>>24&oxff);  然后对相同的位进行^操作
byte temp=(bte)a[i]^b[i];

解决方案 »

  1.   

    b[0]=(byte)(i&oxff);  
    b[1]=(byte)(i>>8&oxff);  
    b[2]=(byte)(i>>16&oxff);  
    b[3]=(byte)(i>>24&oxff);
    分别做什么用的呢  
    能说得详细一点吗
      

  2.   

    整形是32位的
    byte是8位的
    上面四个语句是分别取出其中的8位,然后保存在byte[]中>>是右移
    &可以得到一个8位的byte
      

  3.   

    感谢您的答复。
    您说的对相同的位进行^操作,如果我从文件中读取的byte[]长度超过4怎么比较呢
    我对位运算一窍不通,麻烦了
      

  4.   

    没关系啊!
    如果超过了,就可以先把int转出来的byte[]数扩成和你的数组一样大比如byte[]是5个元素
    那么
    int i=..
    byte[] b=new byte[5];
    byte[0]=...byte[3]=..//上面四个还是那么做
    int i=0;
    byte[4]=(byte)(i&0xff);
      

  5.   

    我的意思是说把int的高位用0来补