1 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
因?yàn)槲覀儚挠疫呴_始計(jì)算位,從左邊開始計(jì)算項(xiàng)目;例如對(duì)于
BitArray myBitArray = new BitArray(new byte[] { 10 });
我們有(byte 10從右數(shù)):
10 = 00001010 (binary)
^
second bit (which is 1)
當(dāng)相應(yīng)數(shù)組的項(xiàng)目我們從左邊開始計(jì)數(shù)時(shí):
{false, true, false, true, false, false, false, false}
^
corresponding second BitArray item (which is true)
這就是為什么如果我們想要一個(gè)byte后面的數(shù)組,我們必須Reverse每個(gè)byte表示,例如Linq解決方案
using System.Collections;
using System.Linq;
...
BitArray myBitArray = ...
byte[] myByte = myBitArray
.OfType<bool>()
.Select((value, index) => new { // into chunks of size 8
value,
chunk = index / 8 })
.GroupBy(item => item.chunk, item => item.value)
.Select(chunk => chunk // Each byte representation
.Reverse() // should be reversed
.Aggregate(0, (s, bit) => (s << 1) | (bit ? 1 : 0)))
.Select(item => (byte) item)
.ToArray();
- 1 回答
- 0 關(guān)注
- 165 瀏覽
添加回答
舉報(bào)