Pulling out '0' and '1' from a byte

Is there a easy way of telling what bit's are set in a byte?
Can someone please give me an example of a function that takes a byte (0-255) as input and leaves perhaps a string containing 8 chars i.e "00101101" as a result?
I need to test if certain bit's are set, for example value 4 (the third from the right) ignoring other bit's that are set.
Who is Participating?
schildConnect With a Mentor Commented:
try this, its working

Private Function ByteToBool(ByVal ByteVal As Byte) As String

    Dim Index As Integer
    For Index = 1 To 8
        ByteToBool = IIf(ByteVal And 1, "1", "0") & ByteToBool
        ByteVal = ByteVal / 2
End Function

Good Luck
I would recommed using the And operator.

To test for bits being set, take the decimal value of the bit, and AND it against the tested value.

If it is set it will return the value that you are testing for, if not, it will return zero

Bracket the AND expression or you may get strange results (AND has lower priority than =)


(7 and 4)  = 4
(8 and 4)  = 0


rakkasAuthor Commented:
Thanks, Poddy and schild.
You saved my day!!!
The above doesnt seems to work with some numbers. Take 100 for example. I've modified it a bit into the following code. Thanks for your code though, schild.

Public Function ByteToBin(ByVal ByteVal As Byte) As String
Dim Index As Integer

For Index = 1 To 8
    ByteToBin = IIf(ByteVal Mod 2, "1", "0") & ByteToBin
    ByteVal = ByteVal \ 2
End Function
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.

All Courses

From novice to tech pro — start learning today.