C#?BitArray(點(diǎn)矩陣)轉(zhuǎn)換成int和string的方法實(shí)現(xiàn)
BitArray的基礎(chǔ)可以看菜鳥編程
BitArray 類管理一個緊湊型的位值數(shù)組,它使用布爾值來表示,其中 true 表示位是開啟的(1),false 表示位是關(guān)閉的(0)。
當(dāng)您需要存儲位,但是事先不知道位數(shù)時,則使用點(diǎn)陣列。您可以使用整型索引從點(diǎn)陣列集合中訪問各項,索引從零開始。
BitArray 類的方法和屬性
下表列出了 BitArray 類的一些常用的 屬性:
| 屬性 | 描述 |
|---|---|
| Count | 獲取 BitArray 中包含的元素個數(shù)。 |
| IsReadOnly | 獲取一個值,表示 BitArray 是否只讀。 |
| Item | 獲取或設(shè)置 BitArray 中指定位置的位的值。 |
| Length | 獲取或設(shè)置 BitArray 中的元素個數(shù)。 |
下表列出了 BitArray 類的一些常用的 方法:
| 序號 | 方法名 & 描述 |
|---|---|
| 1 | public BitArray And( BitArray value ); 對當(dāng)前的 BitArray 中的元素和指定的 BitArray 中的相對應(yīng)的元素執(zhí)行按位與操作。 |
| 2 | public bool Get( int index ); 獲取 BitArray 中指定位置的位的值。 |
| 3 | public BitArray Not(); 把當(dāng)前的 BitArray 中的位值反轉(zhuǎn),以便設(shè)置為 true 的元素變?yōu)?false,設(shè)置為 false 的元素變?yōu)?true。 |
| 4 | public BitArray Or( BitArray value ); 對當(dāng)前的 BitArray 中的元素和指定的 BitArray 中的相對應(yīng)的元素執(zhí)行按位或操作。 |
| 5 | public void Set( int index, bool value ); 把 BitArray 中指定位置的位設(shè)置為指定的值。 |
| 6 | public void SetAll( bool value ); 把 BitArray 中的所有位設(shè)置為指定的值。 |
| 7 | public BitArray Xor( BitArray value ); 對當(dāng)前的 BitArray 中的元素和指定的 BitArray 中的相對應(yīng)的元素執(zhí)行按位異或操作。 |
了解了BitArray的大概,我們來做BitArray和Int和string的轉(zhuǎn)換,
BitArray轉(zhuǎn)成Int方法
/// <summary>
/// 點(diǎn)矩陣轉(zhuǎn)成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轉(zhuǎn)成string方法(如果有亂碼,請自行修改編碼)
/// <summary>
/// 點(diǎn)矩陣轉(zhuǎn)換成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上調(diào)用測試(Dump是LinqPad的輸出的方法):
void Main()
{
var bi = new BitArray(new bool[] { true, false, false, false, false, true, false, false });
bool[] bs = bi.Cast<bool>().ToArray();//直接轉(zhuǎn)成bool數(shù)組,但這個結(jié)果無意義
BitArrayToInt(bi).Dump("點(diǎn)矩陣轉(zhuǎn)成int:");//點(diǎn)矩陣轉(zhuǎn)成int
BitArrayToStr(bi).Dump("點(diǎn)矩陣轉(zhuǎn)成字符串:");//點(diǎn)矩陣轉(zhuǎn)成字符串
//測試將字符串轉(zhuǎn)成點(diǎn)矩陣再轉(zhuǎn)回字符串
var str = "濤神";
//點(diǎn)矩陣只支持bool[]、byte[]、int[],所以字符串需要先轉(zhuǎn)成byte[]
byte[] byteArray = System.Text.Encoding.Default.GetBytes(str);
var ba = new BitArray(byteArray);//創(chuàng)建一個點(diǎn)矩陣
BitArrayToStr(ba).Dump("將點(diǎn)矩陣轉(zhuǎn)成字符串:");//將點(diǎn)矩陣轉(zhuǎn)成字符串
}
結(jié)果:

到此這篇關(guān)于C# BitArray(點(diǎn)矩陣)轉(zhuǎn)換成int和string的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C# BitArray轉(zhuǎn)換成int和string內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C#與C++?dll之間傳遞字符串string?wchar_t*?char*?IntPtr問題
- C#開發(fā)之int與string轉(zhuǎn)化操作
- C#中BitConverter.ToUInt16()和BitConverter.ToString()的簡單使用
- C# 6.0 內(nèi)插字符串(Interpolated Strings )的使用方法
- C#中字符串優(yōu)化String.Intern、IsInterned詳解
- C#中把字符串String轉(zhuǎn)換為整型Int的小例子
- c# StringBuilder.Replace 方法 (Char, Char, Int32, Int32)
- C#中String轉(zhuǎn)int的四種方法
相關(guān)文章
C#采用mouse_event函數(shù)實(shí)現(xiàn)模擬鼠標(biāo)功能
這篇文章主要介紹了C#模擬鼠標(biāo)點(diǎn)擊小功能,通過代碼向大家做分析,需要的朋友可以參考下2015-07-07
C#實(shí)現(xiàn)鼠標(biāo)移動到曲線圖上顯示值的方法
這篇文章主要介紹了C#實(shí)現(xiàn)鼠標(biāo)移動到曲線圖上顯示值的方法,是C#的WinForm窗體程序設(shè)計中非常實(shí)用的技巧,需要的朋友可以參考下2014-10-10

