首页 新闻 搜索 专区 学院

如何用JAVA或者C#实现bit-map

0
悬赏园豆:10 [已解决问题] 解决于 2012-10-25 11:13

假如要使一个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+"  ");
    }
   }
  }
 }

白来了123的主页 白来了123 | 初学一级 | 园豆:160
提问于:2012-10-24 18:32
< >
分享
最佳答案
0

.net提供了一个System.Collections.BitArray就是进行位操作的,看能满足你的需求不?

实在不行就自己写个吧,位操作又不是很复杂。

收获园豆:10
天方 | 大侠五级 |园豆:5266 | 2012-10-24 20:36

我自己写了一个,如上。但是总出现问题。不知道,哪里搞错了?

白来了123 | 园豆:160 (初学一级) | 2012-10-24 21:19

我自己解决了,这个程序自身有问题。不过还是谢谢你

白来了123 | 园豆:160 (初学一级) | 2012-10-25 11:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册