5 Stimmen

Die Kontrolle der führenden Nullen mit BitSet in Java

Also, gemäß dieser Frage gibt es zwei Möglichkeiten, die Größe eines BitSet zu betrachten.

  1. size(), was veraltet ist und nicht wirklich nützlich. Dem stimme ich zu. Die Größe beträgt 64 nach folgender Ausführung:

    BitSet b = new BitSet(8);

  2. length(), was den Index des höchsten gesetzten Bits zurückgibt. Im obigen Beispiel wird length() 0 zurückgeben. Dies ist teilweise nützlich, spiegelt jedoch nicht genau die Anzahl der Bits wider, die das BitSet darstellen soll, falls führende Nullen vorhanden sind.

Die Informationen, mit denen ich arbeite, fallen selten (wenn überhaupt) gleichmäßig in 8-Bit-Bytes und die führenden 0s sind für mich genauso wichtig wie die 1s. Ich habe einige Datenfelder, die 333 Bits lang sind, einige, die 20 sind usw.

Gibt es einen besseren Weg, um Bit-Level-Details in Java zu behandeln, der führende Nullen berücksichtigt? Andernfalls werde ich sozusagen 'meins' machen müssen. Ich habe bereits einige Ideen, aber ich würde es bevorzugen, das Rad nicht neu zu erfinden, wenn möglich.

2voto

CoderInNetwork Punkte 2643

Ich hatte ein ähnliches Problem und fand keine integrierte Lösung, aber einige Änderungen vorzunehmen ist nicht so teuer.

public class MyBitSet extends BitSet {

    int realSize;

    public MyBitSet(int realsize) {
        // TODO-Automatisch generierter Konstruktorstub

        super(realsize);
        this.realSize=realsize;
    }

    public int realSize()
    {
        return this.realSize;
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X