Uncommon Numeric Conversions
Windows only
Hexadecimal
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)
Dim strBinary, intMask, i
strBinary =
intMask = 1
For i = 1 To intBits
If (intNumber And intMask) Then
strBinary = "1" & strBinary
Else
strBinary = "0" & strBinary
End If
intMask = intMask * 2
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