*char hex naar int

halle allemaal,

allereerst dankjewel voor jullie reactie,
Idd ergens in mijn programma zou er een derde Char* bij moeten komen. maar ik schrijf er maar twee naar toe 0 en 1 wel te verstaan.
ik heb ze dan ook als volgt gedefinieerd:

char roods [1]="";
char groens [1]="";
char blauws [1]="";

De printlines heb ik er ook al tussen gezet, Daar kan ik ook zien dat er een character bij komt, Maar deze declareer ik nergens en schrijf er ook niks naartoe.

geen idee waar deze extra karakter vandaan komt. nu heb ik voor het gemak maar even de functie aangepast en zelf geschreven. deze is als volgt:

int x2i(char *s) 
{int x=0;
int y =0;
       if (s[0] >= '0' && s[0] <= '9') {
          x = (s[0] - '0') * 16 ; 
       }
         else if (s[0] >= 'A' && s[0] <= 'F') {
          x = (s[0] - 'A') + 10; 
          x=x*16;
           }
 if (s[1] >= '0' && s[1] <= '9') {
      y = s[1] - '0'; 
   }
   else if (s[1] >= 'A' && s[1] <= 'F') {
      y = (s[1] - 'A') + 10; 
      
   }
 x = x + y;
 Serial.println(x);
 return x;
}
[\code]

Nu krijg ik wel de goede waarde(dec)  terug, Alleen blijf ik nog steeds het probleem hebben dat er zomaar karakters bij komen. nu komen er zelfs twee bij.

dit is de string:
# 0C0286

output is:

0C    024F    86 

Waar die 4F vandaan komt mag joost weten. 

Wat mij opvalt is dat de waarde die ik de eerste keer ingeef:

laten we zeggen 001122 voor het gemak, kloppen deze waardes. 00 11 22  Maar als ik daarna nog een keer een waarde ingeef bijv  44 55 66 , krijg ik deze output in de char array ,   44 5522 66, Deze extra characters komen dus van de waarde die ik daarvoor binnen gekregen heb, en deze wordt dan daar bij geschreven? :s

ik heb geen idee meer.

Wordt er bij een character array niet automatisch een '/0' verwacht?