byte[] myBytes = BitConverter.GetBytes(myin

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

Solved

Posted on 2004-10-04

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?

like

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

next

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.

Thanks,

Nick

like

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

next

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.

Thanks,

Nick

6 Comments

byte[] myBytes = BitConverter.GetBytes(myin

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

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

Else

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))

mean...

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

(1<<(2-1))

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

Hence

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..

Cheers

Mohan

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

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

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

Connect with top rated Experts

**17** Experts available now in Live!