通过移位的方式检索

有这样的配置文件:

<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;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值