假如要使一个char数组或者byte数组中的每一位应该怎么做?
下面是我的方案。但是不成功。请指点
public static void main(String[] args) {
int[] A=new int[]{2,34,6,15,7,8,9,93,100};
byte[] c=new byte[13];
//设置所有的位都为0
for(int i=0;i<13;i++){
c[i]=(byte) ((byte)c[i]&0x0);
}
//数组加入到c中
c=setBit(c,A);
//输出c
outPut(c);
}
public static byte[] setBit(byte[] c,int[] num){
for(int i=0;i<num.length;i++){
int j=num[i]/8;//一个字节八位
c[j]=(byte) ((int)c[j]|(0x1<<(j%8)));
}
return c;
}
public static void outPut(byte[] c){
for(int i=0;i<c.length;i++){
for(int k=0;k<8;k++){
if((c[k]&1<<k)==(1<<k)){
System.out.print(i*8+k+" ");
}
}
}
}
.net提供了一个System.Collections.BitArray就是进行位操作的,看能满足你的需求不?
实在不行就自己写个吧,位操作又不是很复杂。
我自己写了一个,如上。但是总出现问题。不知道,哪里搞错了?
我自己解决了,这个程序自身有问题。不过还是谢谢你