Convert decimal to Binary or Hexadecimal

Hi! Exist a component, or any other way to convert a decimal to a binary or hexadecimal?

Nope, hexadecimal (provided your number is an integer, otherwise it gets really hairy) is pretty easy with a little bit of C#, I don’t think there’s a good binary formatter in .NET, but I might be wrong.

Ok! Thanks David one more time!

@osvalijr for binary of an integer you could download the cPython component and convert using numpy:

import numpy as np

assert np.binary_repr(3)  == '11'
assert np.binary_repr(10) == '1010'

And I think this would work using the native ironpython that comes Grasshopper:

I just wrote this up, so could be buggy! I feel like with the use of tolerances we could get it to work with non-integers…

import math

def is_zero(x):
    return abs(x) < 1e-10

def make_bin(x,val=0):

    if is_zero(x): # base case
        return val
    
    z = math.log(x,2)
    val += int(math.pow(10, int(z)))
    
    if is_zero(int(z) - float(z)): # base 2
        return val
    else: # recurse until base 2 or zero
        rest = x - math.pow(2, int(z))
        if is_zero(rest%2 - 0.0):
            return make_bin(rest, val)
        else:
            return make_bin(rest-1, val) + 1

# Tests
assert make_bin(0) == 0  
assert make_bin(1) == 1        
assert make_bin(2) == 10
assert make_bin(18) == 10010
assert make_bin(32) == 100000

(Iron)Python has hex() and bin() that might (they only work on integers) work for you:

181005_BinHex_GHPython.gh (2.9 KB)

2 Likes