Pues tienes razon Modulay asi es mas facil, pero lo mas curioso es que como has puesto tu me funciona y usando el bucle while o for no :S Ya me dolia la cabeza de probar cosas, voy a usar este metodo que para mi caso de 3 digitos me vale.
Aunque me kedo fastidiado porque a mi entender el bucle hace lo mismo
Aunke no es problema del bucle porque si pongo esto
Rojo=Rojo*10+Buffer[0]-48;
Rojo=Rojo*10+Buffer[1]-48;
Rojo=Rojo*10+Buffer[2]-48;
me sigue dando un valor mal, alguien ve la difrencia entre lo anterior y esto?
rojo = 100*(buffer[0]-0x30) + 10*(buffer[1]-0x30) + (buffer[2]-0x30);
Yo lo calculo y me da lo mismo pero parece que al compilador no :S que locura...