1

Is there a way to show the representation of an int in bits in c#?

i.e.

1  = 00001
20 = 10100

etc.

I have tried using BitConverter with no luck. This should be simple, but I can't find a solution!

Ryan
  • 3,844
  • 6
  • 43
  • 67
  • This question: http://stackoverflow.com/questions/6758196/convert-int-to-a-bit-array-in-net seems to have a few solutions to your question. – Phillip Carter Aug 14 '13 at 01:29
  • Thanks @EdgySwingsetAcid - knew this had to be on SO somewhere, just couldn't find it! Cue the votes to close... – Ryan Aug 14 '13 at 01:31

3 Answers3

7

Convert.ToString(value, base)

Converts the value of a 32-bit signed integer to its equivalent string representation in a specified base. Specify 2 for the base.

Community
  • 1
  • 1
Robert Harvey
  • 173,679
  • 45
  • 326
  • 490
2

Here's a one-liner using linq:

var myint = 20;
var bytes = Enumerable.Range(0, 32).Select(b => (myint >> b) & 1);
// { 0, 0, 1, 0, 1, 0 ... }

Of course this is in reverse order, to swap it around just use:

var myint = 20;
var bytes = Enumerable.Range(0, 32).Select(b => (myint >> (31 - b)) & 1);
// { ..., 0, 1, 0, 1, 0, 0 }
p.s.w.g
  • 141,205
  • 29
  • 278
  • 318
  • That's smart! Thank you. I will accept the Convert.ToString() answer since it seems to be a more standard method. But I like this answer a lot! – Ryan Aug 14 '13 at 01:29
1

You could also look at using a BitArray.

var array = new BitArray(BitConverter.GetBytes(1));
Rohan West
  • 9,162
  • 3
  • 36
  • 63