有这样的配置文件:
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>当需要对多个这样的配置项进行查找的时候,一般都会想到通过位操作来判断,如下
将以上配置项依次对应下面的数值
<item>0</item> 0x01 0000 0001
<item>1</item> 0x02 0000 0010
<item>2</item> 0x04 0000 0100
<item>3</item> 0x08 0000 1000
<item>4</item> 0x10 0001 0000
<item>5</item> 0x20 0010 0000
<item>6</item> 0x40 0100 0000
<item>7</item> 0x80 1000 0000若查找的值是0000 0011 就代表0x01和0x02,也就表示目前既有<item>0</item>又有<item>1</item>。
如果按照以上方式处理,当前台页面按照配置文件中的值(0~7),传入到后台的时候,后台需要将(0~7)映射到(0x01~0x80)。
映射的方式有很多种,下面将介绍一种通过移位的简易方法来进行映射:
0x01 1<0
0x02 1<1
0x04 1<2
0x08 1<3
0x10 1<4
0x20 1<5
0x40 1<6
0x80 1<7示例方法:
bool SearchFunc(const int flag, const int condition)
{
return (0x01 < flag) & condition;
}
1133

被折叠的 条评论
为什么被折叠?



