Scala中的位字段

时间:2010-10-19 00:13:45

标签: scala bit-manipulation

如何在Scala中模拟位字段?位字段用于访问一种类型的某些位(如C link中的这样)。我知道可以使用位运算符进行编写,但如果不考虑性能,我认为有更好的方法。

感谢您提供的每一个提示。

3 个答案:

答案 0 :(得分:8)

如果您只想要单个位,那么collection.BitSet将适合您。

如果你想要一个合适的位字段类,那么你运气不好有两个原因。首先,因为Scala没有。其次,因为即使它确实如此,节省的空间可能也不会令人印象深刻,因为与你的位相比,封闭对象的开销可能会很大。

有一些方法可以解决这个问题:一个自定义的类,它包含一个整数,并允许你将它的一部分作为位字段进行操作;但是,当你去存储整数时,你只需将它保存为一个原始的int。或者您可以创建一个位域结构数组(任意长度),它们实现为整数数组。但没有像内置的那样;你必须自己动手。

答案 1 :(得分:2)

可悲的是......移位运算符和按位布尔运算符几乎都是你所拥有的。

答案 2 :(得分:2)

还有这个回购,

  

Java bitset类的字对齐压缩变体。它使用64位运行长度编码(RLE)压缩方案。

http://code.google.com/p/javaewah/