2

How do I set each bit in the following byte array which has 21 bytes or 168 bits to either zero or one?

byte[] logonHours

Thank you very much

0

3 Answers 3

7

Well, to clear every bit to zero you can just use Array.Clear:

Array.Clear(logonHours, 0, logonHours.Length);

Setting each bit is slightly harder:

for (int i = 0; i < logonHours.Length; i++)
{
    logonHours[i] = 0xff;
}

If you find yourself filling an array often, you could write an extension method:

public static void FillArray<T>(this T[] array, T value)
{
    // TODO: Validation
    for (int i = 0; i < array.Length; i++)
    {
        array[i] = value;
    }
}
Sign up to request clarification or add additional context in comments.

Comments

3

BitArray.SetAll:

System.Collections.BitArray a = new System.Collections.BitArray(logonHours);
a.SetAll(true);

Note that this copies the data from the byte array. It's not just a wrapper around it.

Comments

1

This may be more than you need, but ...

Usually when dealing with individual bits in any data type, I define a const for each bit position, then use the binary operators |, &, and ^.

i.e.

    const byte bit1 = 1;
    const byte bit2 = 2;
    const byte bit3 = 4;
    const byte bit4 = 8;
                  .
                  .
    const byte bit8 = 128;

Then you can turn whatever bits you want on and off using the bit operations.

   byte byTest = 0;
   byTest = byTest | bit4;

would turn bit 4 on but leave the rest untouched.

You would use the & and ^ to turn them off or do more complex exercises.

Obviously, since you only want to turn all bits up or down then you can just set the byte to 0 or 255. That would turn them all off or on.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.