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