Sida 1 av 1

Unsigned char till hundratal tiotal ental #LÖST#

Postat: 23 februari 2009, 12:17:53
av slatte
Ja problemet är precis som jag har skrivit. Jag har en unsigned char och vill få ut ental tiotal hundratal i tre olika variabler
om det hade varit en signed char hade det inte varit så svårt hade jag bara gjort typ såhär:

kompilator: Hi-Tech C

Kod: Markera allt

while(tal_temp >= 0)  
   {
      tal_temp = (tal_temp - 100);
      hundreds++;
   }
   hundreds--;
Men en unsigned char kan ju aldrig bli mindre än noll:
har ni något förslag på hur detta går att lösa, jag har funderat lite på om det går konvertera tal_temp till signed int
och sedan dela upp i hundratal osv. och konvertera int till unsigned char igen. men är detta möjligt hur?
Eller finns det något smidigare sätt?

hoppas någon har löst mitt lilla problem tidigare :)

Re: Unsigned char till hundratal tiotal ental

Postat: 23 februari 2009, 12:31:33
av Icecap

Kod: Markera allt

char Digits[3];
char Counter;
Counter = 3;
while(Counter)
  {
  Counter--;
  Digits[Counter] = (Tal_Temp % 10) + '0';
  Tal_Temp /= 10;
  }
Då står de "rätt": Digits[0] = hundratal, Digits[1] = tiotal osv.

Re: Unsigned char till hundratal tiotal ental

Postat: 23 februari 2009, 13:03:16
av slatte
Danke Icecap!

Nu fungerar det!
Bara det att jag fick skriva såhär:

Kod: Markera allt

while(counter)
   {
      counter--;
      digits[counter] = (tal_temp % 10); 
      tal_temp /= 10;  
   }
Jag vet inte riktigt vad (+ '0') gör, men nu fungerar det perfekt :-)

danke!!

Re: Unsigned char till hundratal tiotal ental

Postat: 23 februari 2009, 13:42:42
av Icecap
Aha... som jag skrev rutinen gav det ASCII-tecknet som motsvarade värdet, du vill ha 0, 1, 2, 3... och "mitt" sätt gav '0', '1', '2'...

Re: Unsigned char till hundratal tiotal ental

Postat: 23 februari 2009, 13:53:42
av slatte
okidoke!
Då kopplar jag :-)