C# BitArray(点矩阵)转换成int和string

BitArray的基础可以看菜鸟编程

BitArray 类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),false 表示位是关闭的(0)。

当您需要存储位,但是事先不知道位数时,则使用点阵列。您可以使用整型索引从点阵列集合中访问各项,索引从零开始。

BitArray 类的方法和属性

下表列出了 BitArray 类的一些常用的 属性

属性描述
Count获取 BitArray 中包含的元素个数。
IsReadOnly获取一个值,表示 BitArray 是否只读。
Item获取或设置 BitArray 中指定位置的位的值。
Length获取或设置 BitArray 中的元素个数。

下表列出了 BitArray 类的一些常用的 方法

序号方法名 & 描述
1public BitArray And( BitArray value );
对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位与操作。
2public bool Get( int index );
获取 BitArray 中指定位置的位的值。
3public BitArray Not();
把当前的 BitArray 中的位值反转,以便设置为 true 的元素变为 false,设置为 false 的元素变为 true。
4public BitArray Or( BitArray value );
对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位或操作。
5public void Set( int index, bool value );
把 BitArray 中指定位置的位设置为指定的值。
6public void SetAll( bool value );
把 BitArray 中的所有位设置为指定的值。
7public BitArray Xor( BitArray value );
对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位异或操作。

了解了BitArray的大概,我们来做BitArray和Int和string的转换,

BitArray转成Int方法

/// <summary>
/// 点矩阵转成int
/// </summary>
public static int BitArrayToInt(BitArray bit)
{
	int[] res = new int[1];
	for (int i = 0; i < bit.Count; i++)
	{
		bit.CopyTo(res, 0);
	}
	return res[0];
}

BitArray转成string方法(如果有乱码,请自行修改编码)

/// <summary>
/// 点矩阵转换成string
/// </summary>
public static string BitArrayToStr(BitArray ba)
{
	byte[] strArr = new byte[ba.Length / 8];
	for (int i = 0; i < ba.Length / 8; i++)
	{
		for (int index = i * 8, m = 1; index < i * 8 + 8; index++, m *= 2)
		{
			strArr[i] += ba.Get(index) ? (byte)m : (byte)0;
		}
	}
	return Encoding.Default.GetString(strArr);
}

在LinqPad上调用测试(Dump是LinqPad的输出的方法):

void Main()
{
	var bi = new BitArray(new bool[] { true, false, false, false, false, true, false, false });
	bool[] bs = bi.Cast<bool>().ToArray();//直接转成bool数组,但这个结果无意义

	BitArrayToInt(bi).Dump("点矩阵转成int:");//点矩阵转成int
	BitArrayToStr(bi).Dump("点矩阵转成字符串:");//点矩阵转成字符串

	//测试将字符串转成点矩阵再转回字符串
	var str = "涛神";
	//点矩阵只支持bool[]、byte[]、int[],所以字符串需要先转成byte[]
	byte[] byteArray = System.Text.Encoding.Default.GetBytes(str);
	var ba = new BitArray(byteArray);//创建一个点矩阵
	BitArrayToStr(ba).Dump("将点矩阵转成字符串:");//将点矩阵转成字符串
}

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值