Получить bools из байта и наоборот - PullRequest
0 голосов
/ 24 февраля 2009

Простой вопрос:

Как узнать, какие биты в байте установлены в 0, а какие в 1

например:

//That code would obviously wont work, but how do i make something similar that would work?
byte myByte = 0X32;

foreach(bool bit in myByte)
{
  Console.WriteLine(bit);
}


//Part 2 revert
bool[] bits = new bool[8];
bits[0] = 0
bits[1] = 0
bits[2] = 0
bits[3] = 0
bits[4] = 0
bits[5] = 1
bits[6] = 0
bits[7] = 0

byte newByte = (byte)bits;

В интернете полно примеров, но я просто не могу понять

Ответы [ 3 ]

5 голосов
/ 24 февраля 2009

Вы хотите использовать битовые операции

k = bits = 0;
for (i = 1; i < 256; i <<= 1)
  bool[k++] = (bits & i) != 0;


k = bits = 0;
for (i = 1; i < 256; i <<= 1)
  if (bool[k++]) bits |= i;
1 голос
/ 24 февраля 2009

BitArray класс будет самым простым (хотя и не обязательно самым быстрым) способом.

0 голосов
/ 24 февраля 2009

Вы можете И им. Если 1 бит установлен в обоих числах, он останется установленным. Я не уверен точно, что это за образец после, но немного AND с 1 даст вам true (1) или false (0).

0010 & 1010 = 0010

...