2

簡単なものでなければなりません。

私は、バイナリデータの長いシーケンスを処理しようとしているScalaに取り組んでいます。これは、0と1の長いリストです。この種のデータを保存/アクセスするための「最良の」方法は何ですか。

ここで重要なのはメモリの最適化です。したがって、ブール値を格納するためにバイト全体を使用することは避けたいと思います。また、アクセスは非常に重要なので、バイトに分割してから配列に分割することは避けたいと思います。

BitMapは良い考えですか?Scalaにそのようなクラスはありますか?

そうでない場合は、ByteArrayを使用するのが最善でしょうか?これをどのように実装しますか?

他のアイデアはありますか?

ありがとう、

4

2 に答える 2

2

java.util.BitSetを使用できます(Scalaに似たものにするために、巧妙な明示があれば、おそらくいくつか使用します)。

それでもコストがかかりすぎる場合は、内部で配列を使用するクラスを作成し、ビットをintまたはbyteにパックします。

于 2010-06-29T11:07:48.153 に答える
2

値が均一に分散されていない場合(1よりも大幅に多い0)、ランレングスエンコーディングを使用して画像データをエンコードできます。これは、Faxで使用されるエンコーディングです。

2つのエンコードオプションがあります。

  • 白黒にはRLEを使用
  • 1つの色にRLEのみを使用し、他の色(または混合セクション)をエンコードする場合は直接エンコードを使用します
于 2010-06-29T12:05:33.897 に答える