Depende del valor que tenga tu variable. pero por ejemplo hasta 10 bits es algo asi:
http://www.todopic.com.ar/foros/index.php?topic=45897.msg383461#msg383461Obviamente podes extenderlo para 16 bits si queres. El mejor metodo es el del for ( restas sucesivas, el modulo ocupa mucho tiempo de CPU ), ejemplo para 16 bits
for(milmilesima=0;milmilesima<10 && valor_1 > 10000;milmilesima++,valor_1-=10000);
for(milesima=0;milesima<10 && valor_1 > 1000;milesima++,valor_1-=1000);
for(centena=0;centena<10 && valor_1 > 100;centena++,valor_1-=100);
for(decena=0;decena<10 && valor_1 > 10;decena++,valor_1-=10);
unidad=valor_1;
Reemplaza milmilesima, milesima, centena y decena por valor_2[0] , valor_2[1], valor_2[2], valor_2[3], valor_2[4] respectivamente, y vas a tener el valor que buscas.
He visto que hay una funcion :
String valor_2 = String(valor_1, DEC) ;
No se que funcion es esa, pero nunca vi una asignacion a un string que pueda lograrse asi. Si queres pasarlo a string ( recorda que hay un caracter mas que es el nulo al final) podrias usar sprintf()
Como te decia recorda SIEMPRE que debe existir al menos un valor mas, es decir si valor_1 es siempre de 16 bits el maximo es de 65535, por lo tanto valor_2 deberia tener como minimo 6 lugares. 5 para los digitos + 1 caracter nulo que indica el fin del string.
Lo que si al ser un string, los valores van a estar en ASCII, es decir si tenes el numero 12345 y lo pasas en valor_2 vas a tener esto:
valor_2[0] = '1' = 0x31 = 49d
valor_2[1] = '2' = 0x32 = 50d
valor_2[2] = '3' = 0x33 = 51d
valor_2[3] = '4' = 0x34 = 52d
valor_2[4] = '5' = 0x35 = 53d
valor_2[5] = '\0' = 0x00 = 00d
Lo puse en hexadecimal y decimal, otra de las cosas es que si valor_1 tiene 4 digitos y no 5, valor_2[0] no va a ser 0, sino que va a tener el valor del primer digito y el string se termina en valor_2[4], con los for que pase arriba eso no es problema. El ejemplo en ambos serian:
valor_1 = 1234
Sprintf()
valor_2[0] = '1' = 0x31 = 49d
valor_2[1] = '2' = 0x32 = 50d
valor_2[2] = '3' = 0x33 = 51d
valor_2[3] = '4' = 0x34 = 52d
valor_2[4] = '\0' = 0x00 = 00d
valor_2[5] = '\0' = 0x00 = 00d
Con los for, recorda que no necesitamos un caracter nulo al final por lo cual tiene un elemento menos.
valor_2[0] = 0
valor_2[1] = 1
valor_2[2] = 2
valor_2[3] = 3
valor_2[4] = 4
La principal diferencia entre este y el anterior, es que el anterior es dedicado unicamente a enteros y de un tamaño de 16bits. Mientras que con sprintf podes pasar float,enteros de cualquier tamaño, etc. Lo cual hace a tu codigo mas portable, pero a costo de un uso mayor del micro.