Uncommon Numeric Conversions
Windows only

This function converts numbers to their hexadecimal representation…

Function CHex(intNumber)

Dim strChars, intSign

strChars = "0123456789ABCDEF"
intSign = Sgn(intNumber)

intNumber = Fix(Abs(CDbl(intNumber)))
If (intNumber = 0) Then
CHex = "0"
Exit Function
End If

While (intNumber > 0)
CHex = Mid(strChars, 1 + (intNumber - 16 * Fix(intNumber / 16)), 1) & CHex
intNumber = Fix(intNumber / 16)
Wend

If (intSign = -1) Then CHex = "-" & CHex

End Function


and can be used to…

Rhino.Print CHex(2008) '7D8


## Binary

The following function converts numbers to their binary representation…

Function CBinary(intNumber, intBits)

strBinary =

For i = 1 To intBits
strBinary = "1" & strBinary
Else
strBinary = "0" & strBinary
End If
Next

CBinary = strBinary

End Function


and can be used to…

Rhino.Print CBinary(2008, 16) '0000011111011000


## Roman Numerals

The following function converts numbers to their Roman numeral representation…

Function CRoman(intNumber)

Dim v, w, x, y, arrOnes, arrTens, arrHund, arrThou

arrOnes = Array(,"I","II","III","IV","V","VI","VII","VIII","IX")
arrTens = Array(,"X","XX","XXX","XL","L","LX","LXX","LXXX","XC")
arrHund = Array(,"C","CC","CCC","CD","D","DC","DCC","DCCC","CM")
arrThou = Array(,"M","MM","MMM","MMMM","MMMMM")

v = ((intNumber - (intNumber Mod 1000)) / 1000)
intNumber = (intNumber Mod 1000)

w = ((intNumber - (intNumber Mod 100)) / 100)
intNumber = (intNumber Mod 100)

x = ((intNumber - (intNumber Mod 10)) / 10)

y = (intNumber Mod 10)

CRoman = arrThou(v) & arrHund(w) & arrTens(x) & arrOnes(y)

End Function


and can be used to…

Rhino.Print CRoman(2008) 'MMVIII


## Roman Numeral to Base 10

The following function converts Roman numeral representations to their base 10 representation…

Function CUnRoman(strRoman)

Dim intvalue, strChar, i
intValue = 0

If InStr(strRoman, "CM") Then
intValue = intValue + 900
strRoman = Replace(strRoman, "CM", )
End If

If InStr(strRoman, "CD") Then
intValue = intValue + 400
strRoman = Replace(strRoman, "CD", )
End If

If InStr(strRoman, "XC") Then
intValue = intValue + 90
strRoman = Replace(strRoman, "XC", )
End If

If InStr(strRoman, "XL") Then
intValue = intValue + 40
strRoman = Replace(strRoman, "XL", )
End If

If InStr(strRoman, "IX") Then
intValue = intValue + 9
strRoman = Replace(strRoman, "IX", )
End If

If InStr(strRoman, "IV") Then
intValue = intValue + 4
strRoman = Replace(strRoman, "IV", )
End If

For i = 1 To Len(strRoman)
strChar = Mid(strRoman, i, 1)
Select Case strChar
Case "I" intValue = intValue + 1
Case "V" intValue = intValue + 5
Case "X" intValue = intValue + 10
Case "L" intValue = intValue + 50
Case "C" intValue = intValue + 100
Case "D" intValue = intValue + 500
Case "M" intValue = intValue + 1000
End Select
Next

CUnRoman = intValue

End Function


and can be used to…

Rhino.Print CUnRoman(MMVIII) '2008