美文网首页
用 int 来储存 boolean 数组 代码

用 int 来储存 boolean 数组 代码

作者: steamed_bun | 来源:发表于2017-12-05 11:38 被阅读0次

提取自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) + " ");
        }
    }
}

相关文章

  • 用 int 来储存 boolean 数组 代码

    提取自Zxing源码: Zxing源码 测试代码:

  • 用 int 来储存 boolean 数组

    此方法是看Zxing的源码的时候学到哒~ Zxing源码 效果: 将 boolean 数组"压缩",然后再还...

  • 生成随机0、1矩阵

    写在前面:这是根据上一篇文章 用 int 来储存 boolean 数组 代码 想到的... 然后去测试了一下速度,...

  • 20_总结

    一、动态数组 普通动态数组 环形动态数组 接口设计 int size(){} // 元素的数量 boolean i...

  • dijkstra算法解析

    用一维数组int [] dis 记录V0顶点到各个顶点的最短路径,初始化dis数组后,这个dis数组中储存的每个值...

  • stap探测程序的执行流程

    用stap来查看程序的执行流程: 代码编写如下: #include int testA() { int a...

  • 数据结构入门——大师:Array(一)

    今天我们来构建一个简单的数组类 对于数组其实比较简单啦,我们用int类型的数组完成第一步,后续可以用泛型替代int...

  • 处理数组

    题目 处理数组 代码 int[] array = { 1, 3, -1, 5, -2 };int [] newar...

  • 三、基本数据类型的转换

    int, float,boolean 转字符串 字符串转int、float、boolean

  • 数组

    一维数组 可以储存一组相同的数据类型 int[] number; float[] scores; string[]...

网友评论

      本文标题:用 int 来储存 boolean 数组 代码

      本文链接:https://www.haomeiwen.com/subject/mwoxixtx.html