单色位图

发布于 2024-09-07 02:16:34 字数 264 浏览 2 评论 0原文

应该是一件容易的事。

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

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

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

如果没有,最好使用 ByteArray 吗?你会如何实施这个?

还有其他想法吗?

谢谢,

Should be an easy one.

I'm working on Scala trying to handle long sequences of binary data. That is long lists of 0's and 1's. What is the 'best' way to store/access this kind of data.

The important point here is memory optimisation, so I would like to avoid using an entire byte to store a boolean. Also access is somwhat important, so I would like to avoid paking them into bytes and then into arrays.

Is a BitMap a good idea? Is there such a class in scala?

if not, would it be best to use ByteArray? How would you implement this?

Any other ideas?

Thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

墨落画卷 2024-09-14 02:16:34

您可以使用 java.util.BitSet (也许使用一些巧妙的显式使其更像 Scala)。

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

You can use java.util.BitSet (perhaps with a couple if clever explicits to make it more Scala-like).

If that is still too costly I would write a class that uses an array internally and pack the bits into ints or bytes.

秋叶绚丽 2024-09-14 02:16:34

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

有两种编码选项:

  • 对黑白使用 RLE
  • 对一种颜色仅使用 RLE;如果对另一种颜色(或混合部分)进行编码,则使用直接编码

If your values are not uniformly distributed have (significantly more 0s than 1s) you can use run-length encoding to encode the image data. This is the encoding used by Fax.

There are two encoding options:

  • use RLE for black and white
  • use only RLE for one color and use a direct encoding if you encode the other color (or mixed sections)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文