2010-10-19 18 views
6

¿Cómo se simulan los campos de bits en Scala? Los campos de bit se utilizan para acceder a algunos bits de un tipo (como este en C link). Sé que es posible escribir con operadores de bits, pero creo que hay una mejor manera si no se considera el rendimiento.Campos de bits en Scala

Gracias por cada pista que pueda dar.

Respuesta

8

Si solo quiere bits individuales, entonces collection.BitSet funcionará para usted.

Si desea una clase de campo de bits adecuada, no tiene suerte por dos razones. Primero, porque Scala no tiene uno. En segundo lugar, porque incluso si lo hiciera, el ahorro de espacio probablemente no sería muy impresionante, ya que la sobrecarga del objeto circundante probablemente sería grande en comparación con sus bits.

Hay un par de formas de salir de esto con algo de trabajo: una clase personalizada que envuelve un entero y le permite operar en partes de ella como campos de bits; cuando vas a almacenar el número entero, solo lo tienes guardado como un int primitivo. O puede crear una matriz de estructuras de campo de bit (de longitud arbitraria) que se implementan como una matriz de enteros. Pero no hay nada como eso incorporado; Tendrás que hacer tu propio.

2

Lamentablemente, no ... Los operadores de turno y los operadores booleanos bit a bit son prácticamente lo único que tienes.

+0

Con mi conocimiento actual de la Scala no sé cómo hacerlo, pero creo que es posible el uso de algún tipo de estructura de rasgos. Gracias por la respuesta :) – adelarsq

2

También hay este repo,

variante comprimida alineados por palabras de la clase bitset Java. Utiliza un esquema de compresión de longitud de ejecución de 64 bits (RLE).

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

Cuestiones relacionadas