在位掩码中查找索引

时间:2018-06-30 05:38:51

标签: sql sqlite binary

Halo Binary专家在那里

我有一个位掩码,表示某个房间的 ON 选项,例如11001 (Opt #1, 4, 5) 另一个用户尝试使用自己的位掩码进行搜索(例如111000 (Opt #4, 5, 6) 进行(Room | Search) != 0表示它会比较掩码,并查看是否有相同的开关 ON (在这种情况下为#4) 问题是,开关#4 是会议室的第二个“活动”开关,而第一个是“搜索”开关。 我还需要用户同时发现#4 是会议室的第二个开关。

用户具有要检查的单独的位掩码。 房间和用户都只能打开3个

我的方法可以知道哪个是最后一个(最大)索引,例如使用UserMask2(第三个选项):

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 :(得分:0)

您的问题不是很清楚,因此我不是100%会找到您想要的答案。不过,这里有。

您可以使用like键(其中有两个通配符)搜索列的内容:

  • %表示任何内容
  • _表示任何字符

现在,假设您要在10个可能的开关(在此示例中为最左边的1个)的映射中找到开关1、4和7的匹配项,可以使用以下子句:

WHERE Bitmap like '1__1__1___`

当然,这只是一个例子,您需要根据具体情况对其进行调整。