Битовые поля в Scala - PullRequest
       0

Битовые поля в Scala

6 голосов
/ 19 октября 2010

Как симулировать битовые поля в Scala? Битовые поля используются для доступа к некоторым битам одного типа (например, в C link ). Я знаю, что можно писать с помощью битовых операторов, но я думаю, что есть лучший способ, если не учитывать производительность.

Спасибо за каждый подсказку, которая может дать.

Ответы [ 3 ]

8 голосов
/ 19 октября 2010

Если вам просто нужны отдельные биты, тогда collection.BitSet будет работать для вас.

Если вам нужен правильный класс битовых полей, то вам не повезло по двум причинам. Во-первых, потому что у Scala его нет. Во-вторых, потому что даже если бы это было так, экономия пространства, вероятно, была бы не очень впечатляющей, поскольку накладные расходы охватывающего объекта, вероятно, были бы большими по сравнению с вашими битами.

Есть несколько способов решения этой проблемы: пользовательский класс, который упаковывает целое число и позволяет вам оперировать его частями как битовыми полями; когда вы сохраняете целое число, вы просто сохраняете его как первичный тип int. Или вы можете создать массив структур битовых полей (произвольной длины), которые реализуются как массив целых чисел. Но в этом нет ничего подобного; вам придется кататься самостоятельно.

2 голосов
/ 20 октября 2010

Есть также этот репо,

выровненный по словам сжатый вариант класса Java bitset. В нем используется схема сжатия 64-разрядного кодирования длин серий (RLE).

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

2 голосов
/ 19 октября 2010

К сожалению, нет ... Операторы сдвига и побитовые логические операторы - это почти все, что у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...