为什么我使用 new BitArray(byte[]),无法获得正确的位
Why I use new BitArray(byte[]), Can't get right bits
byte[] test = new byte[] {36, 146};
BitArray ba = new BitArray(test);
for(int i = 0; i < ba.Length; i++)
Debug.Log(ba[i]);
我想要得到的位是:
False False True False False True False False True False False True False False True False
但是 return 是:
False False True False False True False False False True False False True False False True
为什么???
让我们尝试一些不同的数字,比如 1
和 7
让我们得到不同的输出:
byte[] test = new byte[] {1, 7};
BitArray ba = new BitArray(test);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < ba.Length; i++) {
if (i > 0 && i % 8 == 0)
sb.Append(' ');
sb.Append(ba[i] ? '1' : '0');
}
Console.Write(sb.ToString());
结果:
10000000 11100000
你能看到发生了什么吗?
1 -> 0b00000001 -> 10000000 -> True False False False False False False False
7 -> 0b00000111 -> 11100000 -> True True True False False False False False
让我们return初始值:36, 146
36 -> 0b00100100 -> 00100100 -> False False True False False True False False
146 -> 0b10010010 -> 01001001 -> False True False False True False False True
当我们将 1
放入二进制的第 1 位 最右边 :00000001
,但是当我们将相同的 1
表示为位数组我们有第一个位 leftmost: [1, 0, 0, 0, 0, 0, 0, 0] == [True, False, False, False, False, False, False, False]
.
不幸的是,36
是一个二进制回文 00100100
它从左到右和从右到左读取相等,我认为这是原因令人惊讶的行为(为什么前 8 位正确而后 8 位不正确)。
byte[] test = new byte[] {36, 146};
BitArray ba = new BitArray(test);
for(int i = 0; i < ba.Length; i++)
Debug.Log(ba[i]);
我想要得到的位是:
False False True False False True False False True False False True False False True False
但是 return 是:
False False True False False True False False False True False False True False False True
为什么???
让我们尝试一些不同的数字,比如 1
和 7
让我们得到不同的输出:
byte[] test = new byte[] {1, 7};
BitArray ba = new BitArray(test);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < ba.Length; i++) {
if (i > 0 && i % 8 == 0)
sb.Append(' ');
sb.Append(ba[i] ? '1' : '0');
}
Console.Write(sb.ToString());
结果:
10000000 11100000
你能看到发生了什么吗?
1 -> 0b00000001 -> 10000000 -> True False False False False False False False
7 -> 0b00000111 -> 11100000 -> True True True False False False False False
让我们return初始值:36, 146
36 -> 0b00100100 -> 00100100 -> False False True False False True False False
146 -> 0b10010010 -> 01001001 -> False True False False True False False True
当我们将 1
放入二进制的第 1 位 最右边 :00000001
,但是当我们将相同的 1
表示为位数组我们有第一个位 leftmost: [1, 0, 0, 0, 0, 0, 0, 0] == [True, False, False, False, False, False, False, False]
.
不幸的是,36
是一个二进制回文 00100100
它从左到右和从右到左读取相等,我认为这是原因令人惊讶的行为(为什么前 8 位正确而后 8 位不正确)。