No sé de donde habrás sacado este código, pero no me parece un buen ejemplo. Me explico: En primer lugar, lo que tú pasas a la función es un entero y un puntero hacia un tipo char. Pues bien, tu no sabes si ese puntero está inicializado o no, o siquiera sabes si tiene espacios suficientes. Por ejemplo, podrías haber declarado una variable así:
char cadena[2] = "";
y tu se la pasarías a la función como bin_to_string(value, cadena); En este caso, es posible que el programa crashee por salirse de la memoria del programa. En segundo lugar, a mi parecer es mejor tenerlo mas ordenado. Cuando declaras la variable uint la dejas sin inicializar, y la inicializas después con una constante. Mejor que la inicialices cuando la declaras siempre que sea posible.
Por cierto, usa las etiquetas GeSHI
Mod: no hacer doble post