为C#添加位域特性

本文介绍了在C#项目中为实现数据压缩而添加的位域特性,旨在提供类似C++位字段的功能。文章展示了如何使用自定义的位域特性,并提及Unity中Debug在控制台工程中的模拟应用。
摘要由CSDN通过智能技术生成

最近项目中由于要对数据进行压缩,所以产生了为C#添加类似C++中的位域的特性;网上已经有些内容了,但是感觉还不是很好用,所有自己写了一个,分享出来。

先看用法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using GameData;

namespace ConsoleApplication5 {

    class MyTest01 : BitField {
        [BitInfo(3)]
        public bool d0;
        [BitInfo(3)]
        public short d1;
        [BitInfo(3)]
        public int d2;
        [BitInfo(3)]
        public int d3;
        [BitInfo(3)]
        public int d4;
        [BitInfo(3)]
        public int d5;

        public MyTest01(bool _d0, short _d1, int _d2, int _d3, int _d4, int _d5) {
            d0 = _d0;
            d1 = _d1;
            d2 = _d2;
            d3 = _d3;
            d4 = _d4;
            d5 = _d5;
        }

        public MyTest01(byte[] datas) {
            parse(datas);
        }

        public new string ToString() {
            return string.Format("d0: {0}, d1: {1}, d2: {2}, d3: {3}, d4: {4}, d5: {5} \r\nbinary => {6}",
                d0, d1, d2, d3, d4, d5, ArrayConverter.toBinary(toArray()));
        }
    };

    class MyTest02 : BitField {
        [BitInfo(5)]
        public bool val0;
        [BitInfo(5)]
        public byte val1;
        [BitInfo(15)]
        public uint val2;
        [BitInfo(15)]
        public float val3;
        [BitInfo(15)]
        public int val4;
        [BitInfo(15)]
        public int val5;
        [BitInfo(15)]
        public int val6;

        public MyTest02(bool v0, byte v1, uint v2, float v3, int v4, int v5, int v6) {
            val0 = v0;
            val1 = v1;
            val2 = v2;
            val3 = v3;
            val4 = v4;
            val5 = v5;
            val6 = v6;
        }

        public MyTest02(byte[] datas) {
            parse(datas);
        }

        public new string ToString() {
            return string.Format("val0: {0}, val1: {1}, val2: {2}, val3: {3}, val4: {4}, val5: {5}, val6: {6}\r\nbinary => {7}",
                val0, val1, val2, val3, val4, val5, val6, ArrayConver
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值