因此,根据this question,有两种方法可以查看BitSet的大小。

  • size(),这是旧的,实际上没有用。我同意这一点。执行以下操作后,大小为64:

  • length(),它返回最高设置位的索引。在上面的示例中,length()将返回0。这在某种程度上很有用,但是并不能准确反射(reflect)BitSet在前导零的情况下应该表示的位数。

  • 我要处理的信息很少(如果有的话)均匀地分成8位字节,并且开头的0对我来说与1同样重要。我有一些333位长的数据字段,有些是20位,依此类推。

    有没有更好的方法来处理Java中可跟踪前导零的位级详细信息?否则,可以这么说,我将不得不“自己动手”。关于这一点,我已经有了一些想法,但是如果可能的话,我宁愿不要重新发明轮子。

    最佳答案

    我遇到了同样的问题,但是没有找到内置的解决方案,但是进行一些更改并不昂贵。

    public class MyBitSet extends BitSet {
    
        int realSize;
    
    
        public MyBitSet(int realsize) {
            // TODO Auto-generated constructor stub
    
            super(realsize);
            this.realSize=realsize;
        }
    
        public int realSize()
        {
            return this.realSize;
        }
    }
    

    09-25 23:37