Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

developer:scriptsamples:uncommonconversions [2015/09/14] (current)
Line 1: Line 1:
 +====== Uncommon Numeric Conversions ======
 +> **Developer:​** //​[[developer:​rhinoscript|RhinoScript]]//​
 +> **Summary:​** //​Demonstrates some useful (or not so useful) numeric conversions in RhinoScript.//​
  
 +=====Convert numbers to their hexadecimal representation=====
 +
 +<code vb>
 +  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 ​
 +
 +</​code>​
 +
 +> **Example:​** ////
 +
 +   ​Rhino.Print CHex(2008) '7D8
 +
 +=====Convert numbers to their binary representation=====
 +
 +<code vb>
 + ​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 ​
 +
 +</​code>​
 +
 +> **Example:​** ////
 +
 +   ​Rhino.Print CBinary(2008,​ 16) '​0000011111011000
 +
 +=====Convert numbers to their Roman numeral representation=====
 +
 +<code vb>
 + ​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
 +
 +</​code>​
 +
 +> **Example:​** ////
 +
 +   ​Rhino.Print CRoman(2008) '​MMVIII
 +
 +=====Convert Roman numeral representations to their base 10 representation=====
 +
 +<code vb>
 + ​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
 +
 +</​code>​
 +
 +> **Example:​** ////
 +
 +   ​Rhino.Print CUnRoman(MMVIII) '2008
 +
 +\\
 +
 +{{tag>​Developer RhinoScript}}
developer/scriptsamples/uncommonconversions.txt ยท Last modified: 2015/09/14 (external edit)