Decimal to binary number conversion

Need to convert a decimal to binary.  Tried the following snippet with no luck.  Any body got something more understandable for a VB rookie?

Private Sub Command1_Click()

    DecValue = Val(Text1.Text)  
    BinValue = ""    
    Do
    TempValue = DecValue Mod 2
        BinValue = CStr(TempValue) + BinValue
    DecValue = DecValue \ 2
    Loop Until DecValue = 0     
    'Print
    'Print BinValue     
    Text2.Text = BinValue

End Sub
regentAsked:
Who is Participating?
 
alamoCommented:
Here's the same basic code slightly rewritten and made into a function, so that it is easier to understand and debug.  

Public Function ConvertToBinary(DecValue As Long) As String
    Dim BinValue As String
    Do
        BinValue = CStr(DecValue And 1) + BinValue
        DecValue = DecValue \ 2
    Loop Until DecValue = 0
    ConvertToBinary = BinValue
End Function

This function will not work with negative numbers! If you need to print negative numbers, tell me and I'll redo it. If it doesn't work for you otherwise, tell me how and we can debig it.

Hope this helps!
0
 
regentAuthor Commented:
I'm confused, tired and in desperation over this stupid conversion.  Can I just e-mail you my VB project and have you take a look at what I'm doing (trying to do)?  I'm at Turbo96TSI@aol.com

Thanks for your help.

tjr
0
 
luvboxCommented:
VERSION 2.00
Begin Form Form1
   Caption         =   "Form1"
   ClientHeight    =   2070
   ClientLeft      =   1095
   ClientTop       =   1485
   ClientWidth     =   4800
   Height          =   2475
   Left            =   1035
   LinkTopic       =   "Form1"
   ScaleHeight     =   2070
   ScaleWidth      =   4800
   Top             =   1140
   Width           =   4920
   Begin TextBox Text2
      Height          =   285
      Left            =   360
      TabIndex        =   3
      Top             =   1320
      Width           =   4335
   End
   Begin TextBox Text1
      Height          =   285
      Left            =   360
      TabIndex        =   1
      Top             =   480
      Width           =   3015
   End
   Begin Label Label2
      Caption         =   "Display Binary len = 30"
      Height          =   255
      Left            =   360
      TabIndex        =   2
      Top             =   840
      Width           =   2295
   End
   Begin Label Label1
      Caption         =   "Enter Decimal"
      Height          =   255
      Left            =   360
      TabIndex        =   0
      Top             =   120
      Width           =   1935
   End
End
Sub Text1_Change ()
Dim i As Long, x As Long, bin As String
      Const maxpower = 30   ' Maximum number of binary digits supported.

      Text1.MaxLength = 9   ' Maximum number of decimal digits allowed.
      Text2.Enabled = False ' Prevent typing in second text box.
      bin = ""  'Build the desired binary number in this string, bin.
      x = Val(Text1.Text) 'Convert decimal string in text1 to long integer

      If x > 2 ^ maxpower Then
         MsgBox "Number must be no larger than " & Str$(2 ^ maxpower)
         Text2.Text = ""
         Exit Sub
      End If

      ' Here is the heart of the conversion from decimal to binary:

      ' Negative numbers have "1" in the 32nd left-most digit:
      If x < 0 Then bin = bin + "1" Else bin = bin + "0"

      For i = maxpower To 0 Step -1
         If x And (2 ^ i) Then   ' Use the logical "AND" operator.
            bin = bin + "1"
         Else
            bin = bin + "0"
         End If
      Next
      Text2.Text = bin  ' The bin string contains the binary number.

End Sub


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