## VB6 Number System Functions (Hex, Oct, Etc)

Level:

Written By TheVBProgramer.

\$ReqTestHarness\$

#### Returns a string representing the hexadecimal equivalent of x (i.e., it converts a decimal number to a hexadecimal number).

Example:

Print "The decimal number 687 is "; Hex\$(687); " in hex."

The output of the line above would be:

The decimal number 687 is 2AF in hex.

#### Returns a string representing the octal equivalent of x (i.e., it converts a decimal number to a octal number).

Example:

Print "The decimal number 627 is "; Oct\$(627); " in octal."

The output of the line above would be:

The decimal number 627 is 1163 in octal.

### Hex and Octal Numeric Literals

&H before a number means that the number is specified in hex:

Example:

Const lngHexNum As Long = &H2AF

Print lngHexNum

Output:

687

&O before a number means that the number is specified in octal:

Example:

Const lngOctNum As Long = &O1163

Print lngOctNum

Output:

627

Converting a Hex or Octal Number to Decimal

To convert a hexadecimal or octal number to a decimal value, you must treat the hex or octal value as a string, append "&H" or "&O" in front of the value, and use a conversion function such as Val or CLng to convert the string to a numeric value.

Example:

Dim strMyHexNum As String

Dim lngDecimalValue As Long

strMyHexNum = InputBox("Enter a Hex Value:")

strMyHexNum = "&H" & strMyHexNum

lngDecimalValue = Val(strMyHexNum)

PRINT strMyHexNum; " in hex is equivalent to "; lngDecimalValue; " in decimal."

If the user entered "2AF" as input, the result would be:

2AF in hex is equivalent to 687 in decimal.

The following "Try It" code illustrates the concepts presented above:

Private Sub cmdTryIt_Click()

Const lngDECIMAL_NUMBER_1 As Long = 687

Const lngDECIMAL_NUMBER_2 As Long = 627

Const lngHEXADECIMAL_NUMBER As Long = &H2AF

Const lngOCTAL_NUMBER As Long = &O1163

Const strHEX_STRING As String = "BEEF"

Const strOCT_STRING As String = "411"

Dim strHexVal As String

Dim strOctVal As String

Dim lngDecVal As Long

strHexVal = Hex\$(lngDECIMAL_NUMBER_1)

Print "The decimal number "; lngDECIMAL_NUMBER_1; " is "; strHexVal; " in hex."

strOctVal = Oct\$(lngDECIMAL_NUMBER_2)

Print "The decimal number "; lngDECIMAL_NUMBER_2; " is "; strOctVal; " in octal."

Print "The Long Constant specified as '&H2AF' evaluates to: "; lngHEXADECIMAL_NUMBER

Print "The Long Constant specified as '&O1163' evaluates to: "; lngOCTAL_NUMBER

lngDecVal = CLng("&H" & strHEX_STRING)

Print strHEX_STRING; " in hex is equivalent to "; lngDecVal; " in decimal."

lngDecVal = CLng("&O" & strOCT_STRING)

Print strOCT_STRING; " in octal is equivalent to "; lngDecVal; " in decimal."

End Sub

Output:

If you enjoyed this post, subscribe for updates (it's free)

how can we add two hex values from 2 text boxes and print the sum of them into another text box?

'assume text1 and text2 are text boxes that contain Hex values
'text3 will store the sum of text1 and text2 as a Hex value

Dim lFirstVal As Long
Dim lSecondVal As Long
Dim lSum As Long

'convert the two hex values to decimal
lFirstVal = Val("&H" & Trim(text1.Text))
lSecondVal = Val("&H" & Trim(text2.Text))

lSum = lFirstVal + lSecondVal

'convert the sum back into Hex and store in text3
text3.Text = Hex\$(lSum)

End Function

### Oops - That should say "End

Oops - That should say "End Sub", not "End Function"

### YEAH!!

THANKSSSS!~~~ WORKS GREAT!!!!!!!!!

### math functions

how do you do "does not divide by X"?
like i know in python you do %
for example:

if X % 2 then
x*3
end if

### It helped me.

I was getting a value returned in negative. This tool gave me a hint to use cLng() function .

### converter for decimal to hexadecimal

sir,mom

can you gave me a program that coverts a decimal value to hexadecimal
but not more than 255 but not less than on 0

if there a program just e-mail me on my yahoomail in johnrob17k@yahoo.com

i will wait for your response

### can you do that in TextBox??

can you do that in TextBox??

Great! Thanks.

### It's Unsigned

Using the "&H" or the "&O" prefixes returns unsigned values. If you are in range where that could be an issue (for example 2 to the 16th) then appending a type declaration character will be needed to make the value come across correctly. For example this:
?&H9000,&H9000& will return this:
-28672 36864

I put the link to the relevant support article in "Homepage" link.

### Try putting an ampersand at

Try putting an ampersand at the end, i.e. print &hff00&

Martin

### vb6 hex fails

try print &hff00
you should get decimal 65280, but instead you get -256, which is wrong.
hex &hffffff00 is -256