Часть данных моего приложения содержит набор из 9 троичных (base-3) "битов".Чтобы данные были компактными для базы данных, я хотел бы хранить эти данные в виде одного короткого отрезка.Так как 3 ^ 9 <2 ^ 15, я могу представить любое возможное 9-значное число основания-3 как короткое. </p>
Мой текущий метод - работать с ним как строка длиной 9. Я могу прочитать или установить любойцифра по индексу, и это приятно и легко.Чтобы преобразовать его в короткое, я в настоящее время вручную преобразую в основание 10 (используя цикл Shift-Add), а затем использую Int16.Parse, чтобы преобразовать его обратно в двоичное короткое замыкание.Чтобы преобразовать сохраненное значение обратно в строку base 3, я запускаю процесс в обратном порядке.Все это требует времени, и я хотел бы оптимизировать его, если это вообще возможно.
То, что я хотел бы сделать, это всегда сохранять значение как короткое, читать и устанавливать троичные биты на месте.В идеале у меня были бы функции для получения и установки отдельных цифр из двоичного файла.
Я пытался поиграть с некоторыми сдвигами битов и мод-функциями, но не совсем придумал правильный способ сделать это,Я даже не уверен, возможно ли это даже без полного преобразования.
Кто-нибудь может дать мне побитовую арифметическую магию, которая может помочь с этим?