C# BitArray(点矩阵)转换成int和string的方法实现

BitArray的基础可以看菜鸟编程

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

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

BitArray 类的方法和属性

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

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

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

序号 方法名 & 描述
1 public BitArray And( BitArray value );
对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位与操作。
2 public bool Get( int index );
获取 BitArray 中指定位置的位的值。
3 public BitArray Not();
把当前的 BitArray 中的位值反转,以便设置为 true 的元素变为 false,设置为 false 的元素变为 true。
4 public BitArray Or( BitArray value );
对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位或操作。
5 public void Set( int index, bool value );
把 BitArray 中指定位置的位设置为指定的值。
6 public void SetAll( bool value );
把 BitArray 中的所有位设置为指定的值。
7 public 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("将点矩阵转成字符串:");//将点矩阵转成字符串
}

结果:

到此这篇关于C# BitArray(点矩阵)转换成int和string的方法实现的文章就介绍到这了,更多相关C# BitArray转换成int和string内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C# 位图BitArray的使用

    前面聊了布隆过滤器,回归认识一下位图BitMap,阅读前文的同学应该发现了布隆过滤器本身就是基于位图,是位图的一种改进. 位图 先看一个问题, 假如有1千万个整数,整数范围在1到1亿之间,如何快速确定某个整数是否在这个1千万个整数中呢? 乍一看是一个查找问题,循环.二分查找都是常规思路. 一个好的答案是存储结构和算法的完美结合, 基于题干上的特征和条件,我们是否有其他思路. 对于题干我们使用高中排列组合的思维:有1亿个有编号的空篮子,我们拿出这1千万个有数字的球,放进对应的篮子. 最后,所有的篮

  • C# BitArray(点矩阵)转换成int和string的方法实现

    BitArray的基础可以看菜鸟编程 BitArray 类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),false 表示位是关闭的(0). 当您需要存储位,但是事先不知道位数时,则使用点阵列.您可以使用整型索引从点阵列集合中访问各项,索引从零开始. BitArray 类的方法和属性 下表列出了 BitArray 类的一些常用的 属性: 属性 描述 Count 获取 BitArray 中包含的元素个数. IsReadOnly 获取一个值,表示 BitArray

  • Python 实现将数组/矩阵转换成Image类

    先说明一下为什么要将数组转换成Image类.我处理的图像是FITS (Flexible Image Transport System)文件,是一种灰度图像文件,也就是单通道图像. FITS图像的特点是灰度值取值为0~65535,这类图像在python下读成数组首先是不能直接转换成位图,也就不能用OpenCV.Image等方法了. 如果是普通的jpg图像,用自带的Image库就能实现很多功能. 下方的这幅图就是通过python下的Image库中的rotate函数实现的 接下来贴上代码. impor

  • c#中将uint值转换成int的实例方法

    C#中的uint是无符号整数类型,int是有符合整数类型.两者的取值范围不相同,那么,如何将uint值转换为int呢? 打开visual studio,创建一个控制台应用程序,本文的所有代码都在Program.cs文件的Main方法中进行演示.首先查看uint无符号整数类型的最大值 uint.MaxValue = 4294967295,最小值 uint.MinValue = 0 然后在Main方法中使用 int.MaxValue 获得int的最大值,int.MinValue 获得int的最小值.

  • android 把float转换成Int的实例讲解

    1.采用强转的方式 float a = 1.1L; //定义一个float型变量,变量名为a,值为1.1,L表示是浮点型 int b = (int)a;//用(int)强制转换为整型b 2.采用Math.round方式 float a = 1.1L; //定义一个float型变量,变量名为a,值为1.1,L表示是浮点型 int b = Math.round(a);//采用round方式转换为整型 以上这篇android 把float转换成Int的实例讲解就是小编分享给大家的全部内容了,希望能给大

  • C#实现集合转换成json格式数据的方法

    本文实例讲述了C#实现集合转换成json格式数据的方法.分享给大家供大家参考,具体如下: /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string ToJson(DataTable dt) { if (dt != null

  • php将12小时制转换成24小时制的方法

    本文实例讲述了php将12小时制转换成24小时制的方法.分享给大家供大家参考.具体如下: php将12小时制转换成24小时制,输入格式为:02:30:00 pm 转换成:14:30:00 <?php function to_24_hour($hours,$minutes,$seconds,$meridiem){ $hours = sprintf('%02d',(int) $hours); $minutes = sprintf('%02d',(int) $minutes); $seconds =

  • python 读取文件并把矩阵转成numpy的两种方法

    在当前目录下: 方法1: file = open('filename') a =file.read() b =a.split('\n')#使用换行 len(b) #统计有多少行 for i in range(len(b)): b[i] = b[i].split()#使用空格分开 len(b[0])#可以查看第一行有多少列. B[0][311]#可以查看具体某行某列的数 import numpy as np b = np.array(b)#转成numpy形的 type(b) # 输出<输出clas

  • JS实现获取毫秒值及转换成年月日时分秒的方法

    本文实例讲述了JS实现获取毫秒值及转换成年月日时分秒的方法.分享给大家供大家参考,具体如下: 时间日期对象 创建方式一 var date=new Date(); 创建方式二 兼容性最强 推荐使用 var date1=new Date("2017/08-26 15:15:15"); 创建方式三 var date2=new Date(2017,9,18,23,15,23); 返回结果是从1970/01/01到现在的毫秒值 var date = Date.now(); var date =

  • Java和scala实现 Spark RDD转换成DataFrame的两种方法小结

    一:准备数据源 在项目下新建一个student.txt文件,里面的内容为: 1,zhangsan,20 2,lisi,21 3,wanger,19 4,fangliu,18 二:实现 Java版: 1.首先新建一个student的Bean对象,实现序列化和toString()方法,具体代码如下: package com.cxd.sql; import java.io.Serializable; @SuppressWarnings("serial") public class Stude

  • JavaScript实现将xml转换成html table表格的方法

    本文实例讲述了JavaScript实现将xml转换成html table表格的方法.分享给大家供大家参考.具体如下: function ConvertToTable(targetNode) { // if the targetNode is xmlNode this line must be removed // i couldnt find a way to parse xml string to xml node // so i parse xml string to xml documen

随机推荐