1 回答

TA貢獻1786條經驗 獲得超11個贊
因為我們從右邊開始計算位,從左邊開始計算項目;例如對于
BitArray myBitArray = new BitArray(new byte[] { 10 });
我們有(byte 10從右數):
10 = 00001010 (binary)
^
second bit (which is 1)
當相應數組的項目我們從左邊開始計數時:
{false, true, false, true, false, false, false, false}
^
corresponding second BitArray item (which is true)
這就是為什么如果我們想要一個byte后面的數組,我們必須Reverse每個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 關注
- 174 瀏覽
添加回答
舉報