Number System Functions

 

Function

Description

Hex$(x)

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.

 

Oct$(x)

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:

 

 

Download the VB project code for the example above here.

 

If you wish to review number systems theory, a comprehensive tutorial in PDF format is available via the "Number Systems Tutorial" link below. This tutorial covers the binary, hexadecimal, and octal number systems including how to convert from one number system to the other and how to perform addition and subtraction in these systems.

 

You will need the Adobe Reader to view the tutorial. If you do not have the Adobe Reader installed on your system, you can download it here.

 

Number Systems Tutorial (PDF format, 1141 KB)