C#: 按位存取数据的简单操作

本文通过一个示例介绍如何使用C#进行按位存取来处理游戏中的签到数据,包括判断当天是否签到及累计签到天数的存储。该方法旨在简化数据操作并提高理解,欢迎对潜在错误提出指正。

描述:读取游戏中每周的签到次数,用按位存取方法,保存数据(当天获取签到数据需从服务器获取),
该示例中有,当天是否签到,目前累计签到几天数据。


 // 获取签到记录
        public int[] SignRecord(bool isTotal)
        {
            int[] sign_list = new int[7];   // 签到次数
            int[] signNum_list = new int[3];// 累计签到
            int signCount = 0;
            int temp = 0;
            UserData data = GetInstance();
            Debug.Log("\n === data.signin  === " + data.signin);
            if(!isTotal)
            {
                for (int i = 0; i < 7; i++)
                {
                    temp = (i == 0) ? 6 : i - 1;  // 从星期日开始计算 0~6
                    if ((data.signin & (1 << i)) != 0)
                    {
                        sign_list[temp] = 1;      // 签到
                        signCount++;
                        //Debug.Log("\n=== signCount: " + signCount);
                    }
                    else
                    {
                        sign_list[temp] = 0;
                    }
                }
                this.signinCount = signCount;
                return sign_list;
            }
            else
            {
                // 累计签到 记录
                for (int j = 0; j < signNum_list.Length; j++)
                {
                    if ((data.totalsignin & (1 << j)) != 0)
                    {
                        signNum_list[j] = 1;     // 已签到
                    }
                    else
                    {
                        signNum_list[j] = 0;
                    }
                    //Debug.Log("\n=== signNum_list: " + signNum_list[j] + ", j: " + j);
                }
                return signNum_list;
            }
        }

        // 保存签到记录 --- 客户端保存
        // 保存客户端好处是,不用每次都从服务器获取
        public void ModifySignRecord(int index, bool isTotalSign = false)
        {
            if (!isTotalSign)
            {
                this.signin = this.signin | 1 << index;
                Debug.Log("\n ======= sign.count ====: " + this.signin);
            }
            else
            {
                this.totalsignin = this.totalsignin | 1 << index;
                Debug.Log("\n ======= total sign ====: " + this.totalsignin);
            }
        }

这只是个示例,为了更好的理解,按位存取的数据操作。有什么错误的地方,欢迎指正~


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值