2

应该是一件容易的事。

我正在研究 Scala,试图处理长序列的二进制数据。那是一长串 0 和 1 的列表。存储/访问此类数据的“最佳”方式是什么。

这里的重点是内存优化,所以我想避免使用整个字节来存储布尔值。访问也很重要,所以我想避免将它们放入字节然后放入数组中。

位图是个好主意吗?scala中有这样的课程吗?

如果没有,最好使用 ByteArray 吗?你将如何实现这一点?

还有其他想法吗?

谢谢,

4

2 回答 2

2

如果您的值不是均匀分布的(0 多于 1),您可以使用游程编码来编码图像数据。这是传真使用的编码。

有两种编码选项:

  • 将 RLE 用于黑白
  • 仅对一种颜色使用 RLE,如果对另一种颜色(或混合部分)进行编码,则使用直接编码
于 2010-06-29T12:05:33.897 回答
2

您可以使用 java.util.BitSet (如果聪明的显式使其更像 Scala,也许可以使用一对夫妇)。

如果这仍然太昂贵,我会编写一个在内部使用数组并将位打包成整数或字节的类。

于 2010-06-29T11:07:48.153 回答