Найти индекс в битовой маске - PullRequest
0 голосов
/ 30 июня 2018

Эксперты Halo Binary там,

У меня есть битовая маска, представляющая ON варианты комнаты, скажем 11001 (Opt #1, 4, 5) Другой пользователь пытается выполнить поиск с помощью собственной битовой маски (скажем, 111000 (Opt #4, 5, 6) Выполнение (Room | Search) != 0 означает, что оно сравнивает маску и определяет, есть ли такой же переключатель ON (в данном случае # 4) Дело в том, что переключатель # 4 является вторым «активным» переключателем комнаты и первым для «поиска». Мне нужно, чтобы пользователь также обнаружил, что # 4 - это второй переключатель комнаты.

У пользователя есть отдельная битовая маска для проверки. И комната, и пользователь могут включить только 3

Мой подход может знать, какой последний (самый большой) индекс, используя, например, UserMask2 (3-й вариант):

if(RoomMask | UserMask2 != 0) A = (RoomMask - UserMask2 = 11001 - 10000 = 01001).

if (A < RoomMask) UserMask2 является третьим переключателем, потому что минус UserMask2 делает его ниже, чем UserMask2

Это только обнаруживает, находится ли определенная UserMask на самом большом бите RoomMask.

Но я не уверен, как продолжить.

Это используется для поиска совпадений с использованием Photon, который использует SQL , и мне, вероятно, придется сделать это с помощью одного запроса WHERE (не уверен, что он может хранить переменные.)

https://doc.photonengine.com/en-us/pun/current/lobby-and-matchmaking/matchmaking-and-lobby#sql_lobby_type

Надеюсь, я достаточно ясно Ура!

1 Ответ

0 голосов
/ 30 июня 2018

Ваш вопрос не очень ясен, и, следовательно, я не на 100% уверен, что этот ответ - то, что вы ищете. Тем не менее, здесь у вас есть.

Вы можете искать содержимое столбцов с помощью клавиши like, где у вас есть два подстановочных знака:

  • % означает что-нибудь ,
  • _ означает любой символ .

Теперь предположим, что вы хотите найти соответствие для переключателей 1, 4 и 7 на карте, скажем, из 10 возможных переключателей (в данном примере это 1 крайний левый), вы можете использовать предложение:

WHERE Bitmap like '1__1__1___`

Конечно, это всего лишь пример, и вам необходимо адаптировать его к вашему конкретному контексту.

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