用 int 来储存 boolean 数组 代码

提取自Zxing源码: Zxing源码

package com.wx.zxing.bitArray;

/**
 * 用 int 来储存 boolean 数组
 */
public class BitArray {

    private int[] bits;
    /** size 不是 bits 的大小, 而是被保存的数组大小 */
    private int size;


    public BitArray() {
        this.size = 0;
        this.bits = new int[1];
    }

    public BitArray(int size) {
        this.size = 0;
        this.bits = new int[(size + 31) / 32];
    }

    public void encode(boolean bit){
        if (bit){
            bits[size / 32] |= 1 << (size & 0x1F);
        }
        size++;
    }

    public boolean get(int index){
        return (bits[index / size] & (1 << (index & 0x1F))) != 0;
    }

    public int[] getBitArray() {
        return bits;
    }

    public int getSize() {
        return size;
    }

}

测试代码:

package com.wx.zxing.bitArray;

public class BitArrayTest {

    public static void main(String[] args) {
        boolean[] array = new boolean[]{false,true,false,false,true,true,false,true,false,false,true,true,false,true,false,false,true,true,false,true,false,false,true,true,false,true,false,false,true,true,false,true,false,false,true,true,false,true,false,false,true,true,false,true,false,false,true,true};
        BitArray bitArray = new BitArray(array.length);
        for (int i = 0; i < array.length; i++){
            bitArray.encode(array[i]);
        }
        int[] bits2 = bitArray.getBitArray();
        System.out.println("……………………………………");
        for (int b : bits2){
            System.out.print(b + " ");
        }
        System.out.println();
        for (int i = 0; i < bitArray.getSize(); i++){
            System.out.print(bitArray.get(i) + " ");
        }
    }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,084评论 25 709
  • 此方法是看Zxing的源码的时候学到哒~ Zxing源码 效果: 将 boolean 数组"压缩",然后再还...
    steamed_bun阅读 4,556评论 0 1
  • 风花雪月人未来,此情难待,痴心不改。 美丽的外表总有幸福的灵魂。
    古墓道人阅读 1,396评论 0 0
  • 这是一个人工智能已经普及的全新的世界,人类来到了一个彻底解放双手、双眼的时代,来到了一个全人类的太平盛世。每一个有...
    padon556阅读 1,751评论 0 0
  • 蝎或蝎子的原名“墩”或“蛾子”,蝎源自“蜮”字的简化。目前在我国已知有15个种分布,陕西作为其重要分布区域,常...
    川过岁月阅读 5,900评论 1 0

友情链接更多精彩内容