C#?BitArray(點(diǎn)矩陣)轉(zhuǎn)換成int和string的方法實(shí)現(xiàn)
BitArray的基礎(chǔ)可以看菜鳥(niǎo)編程
BitArray 類(lèi)管理一個(gè)緊湊型的位值數(shù)組,它使用布爾值來(lái)表示,其中 true 表示位是開(kāi)啟的(1),false 表示位是關(guān)閉的(0)。
當(dāng)您需要存儲(chǔ)位,但是事先不知道位數(shù)時(shí),則使用點(diǎn)陣列。您可以使用整型索引從點(diǎn)陣列集合中訪問(wèn)各項(xiàng),索引從零開(kāi)始。
BitArray 類(lèi)的方法和屬性
下表列出了 BitArray 類(lèi)的一些常用的 屬性:
屬性 | 描述 |
---|---|
Count | 獲取 BitArray 中包含的元素個(gè)數(shù)。 |
IsReadOnly | 獲取一個(gè)值,表示 BitArray 是否只讀。 |
Item | 獲取或設(shè)置 BitArray 中指定位置的位的值。 |
Length | 獲取或設(shè)置 BitArray 中的元素個(gè)數(shù)。 |
下表列出了 BitArray 類(lèi)的一些常用的 方法:
序號(hào) | 方法名 & 描述 |
---|---|
1 | public BitArray And( BitArray value ); 對(duì)當(dāng)前的 BitArray 中的元素和指定的 BitArray 中的相對(duì)應(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 ); 對(duì)當(dāng)前的 BitArray 中的元素和指定的 BitArray 中的相對(duì)應(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 ); 對(duì)當(dāng)前的 BitArray 中的元素和指定的 BitArray 中的相對(duì)應(yīng)的元素執(zhí)行按位異或操作。 |
了解了BitArray的大概,我們來(lái)做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方法(如果有亂碼,請(qǐng)自行修改編碼)
/// <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)用測(cè)試(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ù)組,但這個(gè)結(jié)果無(wú)意義 BitArrayToInt(bi).Dump("點(diǎn)矩陣轉(zhuǎn)成int:");//點(diǎn)矩陣轉(zhuǎn)成int BitArrayToStr(bi).Dump("點(diǎn)矩陣轉(zhuǎn)成字符串:");//點(diǎn)矩陣轉(zhuǎn)成字符串 //測(cè)試將字符串轉(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)建一個(gè)點(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C#與C++?dll之間傳遞字符串string?wchar_t*?char*?IntPtr問(wèn)題
- C#開(kāi)發(fā)之int與string轉(zhuǎn)化操作
- C#中BitConverter.ToUInt16()和BitConverter.ToString()的簡(jiǎn)單使用
- 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#實(shí)現(xiàn)簡(jiǎn)單的二叉查找樹(shù)
這篇文章介紹了C#實(shí)現(xiàn)二叉查找樹(shù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06Unity ScrollView實(shí)現(xiàn)自動(dòng)吸附效果
這篇文章主要為大家詳細(xì)介紹了Unity ScrollView實(shí)現(xiàn)自動(dòng)吸附效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07C#動(dòng)態(tài)編譯并執(zhí)行字符串樣例
這篇文章主要為大家詳細(xì)介紹了C#動(dòng)態(tài)編譯并執(zhí)行字符串樣例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07C#中多態(tài)現(xiàn)象和多態(tài)的實(shí)現(xiàn)方法
這篇文章主要介紹了C#中多態(tài)現(xiàn)象和多態(tài)的實(shí)現(xiàn)方法,較為詳細(xì)的分析了多態(tài)的原理與C#實(shí)現(xiàn)多態(tài)的方法,以及相關(guān)的注意事項(xiàng),需要的朋友可以參考下2015-05-05將DLL放入到資源中,運(yùn)行時(shí)自動(dòng)加載的小例子
這篇文章介紹了將DLL放入到資源中,運(yùn)行時(shí)自動(dòng)加載的小例子,有需要的朋友可以參考一下2013-10-10