Convert integer into a bitarray?

Posted on 2004-10-04
Medium Priority
Last Modified: 2008-03-10
how can i turn say integer 129 into something like 10000001 that i can then loop through and tell whether it's a 1 or 0 at any point or on/off/whatever.  I can write all my own custom stuff if need be, but i didn't know if vb had something like this already?


dim test as integer = 129

dim test2 as arrayofsomesort

test2 = turntobits(test)

for a = 0 to test2.count - 1

if test2(a) = 1 then
'fire something here
end if


get where i'm doing?  real similiar to the concept of flags in Quake2 configs where to set certain options you add numbers and together and put taht number in your config.


Question by:NickUA

Accepted Solution

gregasm earned 672 total points
ID: 12223194
Use static methods of the BitConverter class.

byte[] myBytes = BitConverter.GetBytes(myint);

Then you can use the byte array and go deeper into bits.

Assisted Solution

mogun earned 664 total points
ID: 12224159

You don't have to loop through the bit array to check whether a bit is set or not.. Instead you can use bit operators to evaluate whether a bit is set or not....The following is code that uses && operator and << (left shift ) operators to evaluate whether a bit is set or not..

    Public Function IsBitSet(ByVal iConfig As Integer, ByVal iBitToCheck As Integer) As Boolean
        If (iConfig And (1 << (iBitToCheck - 1))) >= 1 Then
            Return True
            Return False
        End If
    End Function

iConfig is the integer number that you want to test...
iBitToCheck is the bit position that you want to check..

Let me tell you what the expression

iConfig And (1 << (iBitToCheck - 1))

Consider iConfig = 8 and iBitToCheck = 2

first take a look at (1<<(iBitToCheck -1 ))
This will left shift 1 by (iBitToCheck-1) times...
Hence this expression becomes
which becomes 1<<1, which mean left shift 1 by 1..
So 1 in binary format 00000001 becomes 00000010...
left shift makes the bits to move to the left side and adds a 0 on the right hand side..

now this will be "And" ed with 8 whose binary is 00001000
00001000 And
00000010 becomes
00000000 which is integer 0 ..
so the if fails and you get the result that bit 2 of 8 is not set..


Note: this code is not tested for all conditions..let me know if there are bugs..

LVL 96

Assisted Solution

by:Bob Learned
Bob Learned earned 664 total points
ID: 12252795
BitVector32 class also.


Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
Planning to migrate your EDB file(s) to a new or an existing Outlook PST file? This video will guide you how to convert EDB file(s) to PST. Besides this, it also describes, how one can easily search any item(s) from multiple folders or mailboxes…
From store locators to asset tracking and route optimization, learn how leading companies are using Google Maps APIs throughout the customer journey to increase checkout conversions, boost user engagement, and optimize order fulfillment. Powered …

597 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question