位运算一个字段保存多种意义的状态数据
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);
}
}
缺点是在数据库中维护数据时,由于保存的位运算后加出来的状态值,可能不是很直观,需要转化出来!
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);
}
}
缺点是在数据库中维护数据时,由于保存的位运算后加出来的状态值,可能不是很直观,需要转化出来!
相关文章推荐
- 使用一个整数字段保存多个状态位数据
- sql server数据库的表中修改一个表的字段的数据类型后,不能保存
- mysql统计一个字段的多种状态
- JPA学习笔记---JPA实体Bean的建立---链接上一个博文:对实体Bean中属性进行操作:保存日期类型,设置字段的长度,名字,是否为空,可以声明枚举字段;可以存放二进制数据,可以存放
- 删除一个表字段所引用的外键,并保存下来,在数据导入后再重新加入先前删除的外键
- PHP编程中如何将多种数据存入一个字段里
- C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,
- 用一个整型字段保存多个开关状态
- (vc)分享一个读写ini文件的类,支持多种数据类型的读写,二进制数据都能保存和读取
- SQL SERVER 2008数据库的表中修改字段的数据类型后,不能保存
- 由数组数据创建一个灰度位图并保存
- 【SQL Server】sql server更改了数据表的字段/新增数据表的字段 无法保存
- Android 分享一个SharedPreferences的工具类,方便保存数据
- SQL Server 不清空数据,修改数据库字段、结构,阻止保存要求重新创建表的更改
- 完成了WF工作流持久化和对持久化介质数据的加载, 但是仅仅用持久化,不能够保存工作流当前的执行状态,需要跟踪服务支持,怎样使用Tracing 服务呢?
- 将一个字段的两个数据分开读取
- Spark把RDD数据保存到一个单个文件中
- 递归遍历文件夹,提取爬取的微博数据的一个字段并存入另一个文件夹
- 关于项目中多次保存订单,并且保存后就快速提交,导致部分数据状态未改变
- MySQL根据某一个或者多个字段查找重复数据