Frage

Sollte leicht sein.

Ich arbeite an Scala versuchen, lange Sequenzen von binären Daten zu verarbeiten. Das ist lange Listen von 0 und 1 ist. Was ist der ‚beste‘ Weg zum Speichern / Zugriff auf diese Art von Daten.

Der wichtige Punkt hier ist die Speicheroptimierung, so würde ich ein ganzes Byte zu vermeiden, wie mit einem boolean zu speichern. Auch Zugang ist somwhat wichtig, so würde ich paking sie in Bytes vermeiden möchten und dann in Arrays.

Ist ein BitMap eine gute Idee? Gibt es eine solche Klasse in scala?

Wenn nicht, wäre es am besten ByteArray zu benutzen? Wie würden Sie diese umsetzen?

Jede andere Ideen?

Danke,

War es hilfreich?

Lösung

Sie können java.util.BitSet verwenden (vielleicht mit ein paar, wenn klug explicits zu machen mehr Scala-like).

Wenn das immer noch zu teuer ist, würde ich eine Klasse schreiben, die intern ein Array verwendet und die Bits in ints oder Bytes packen.

Andere Tipps

Wenn Sie Ihre Werte sind nicht gleichmäßig verteilt haben (deutlich mehr als 0s 1s) Sie können Lauf -Länge Codierung die Bilddaten kodieren. Dies ist die Codierung von Fax verwendet wird.

Es gibt zwei Kodierungsoptionen:

  • Verwendung RLE für Schwarz-Weiß
  • verwenden nur RLE für eine Farbe und verwenden eine direkte Codierung, wenn Sie die andere Farbe (oder Mischabschnitte)
  • kodieren
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top