您的位置:首页 > 其它

位运算一个字段保存多种意义的状态数据

2009-05-14 16:49 447 查看
之前处理数据状态时,多种不同意义的状态,一般要不是分多个字段保存,要不就是保存的数值求mod取余,同事分享了个位运算方式保存状态的方式:

Code

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page

{

enum XType

{

/* 枚举定义所需要使用的状态 */

T0 = 1,

T1 = 2,

T2 = 4,

T3 = 8,

T4 = 16,

T5 = 32,

T6 = 64,

T7 = 128,

T8 = 256

//同理 当状态过多时 使用2进制值过大可以选择使用16进制来保存

//010,1010,1001,0111,1010

//2, C,9, 7,C

}

protected void Page_Load(object sender, EventArgs e)

{

XType xzonghe = 0;

//使用枚举值 位运算添加多个状态值

xzonghe = XType.T0 | XType.T1 | XType.T2 | XType.T3;

int i = (int)xzonghe;

int houlai = 0;

if ((i & (int)XType.T2) == (int)XType.T2)//判断该状态是否存在

{

//删除本来多个状态中的其中一个状态,切记先判断该状态是否存在

houlai = i ^ (int)XType.T2;

}

int new1 = 0;

//添加新状态

new1 = (int)xzonghe | (int)XType.T4;

throw new Exception(xzonghe.ToString("F") + "___" + ((XType)houlai).ToString("F") + "___" + ((XType)new1).ToString("F") + "___" + new1);

}

}

缺点是在数据库中维护数据时,由于保存的位运算后加出来的状态值,可能不是很直观,需要转化出来!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐