zeichen im String umwandeln

Gast #25191
Lesenswert?

...und schon wieder ich

hab ne Zeichenkette z.B. String "500040C90...."
Bei den Zeichen 0C handelt es sich um eine Hex Zahl (d12).
Jetzt möchte ich die Hex 0C nach "kette" kopieren.
Beispiel:
int k;i;
char kette[3];
i=5; //sollte die 0 von 0C sein
kette[k]=string[i];
k++;i++;
kette[k]=string[i];

Jetzt hoffe ich,daß in dem String "Kette" 0C steht.
Nun steht ja i auf C vom string und ich möchte i jetzt um 12 stellen 
erhöhen.
Wie stell ich es am besten an? Er erhöht mir immer i um 67.
Ist ja ein "C" aber soll ja hex C sein.
Gruß Helge
Gast #25196
Lesenswert?

Hallo Reiner
Komm irgendwie nicht klar :-))))
das hier hab ich reingebastelt:

int k;
j=0;
s[j]=rx_buffer[i];j++;i++;s[j]=rx_buffer[i]; //kopiert 07 nach s (als 
zeichen ---also 55---

jetzt kommt deins:  (hab ich bestimmt falsch gemacht)

   char gethex(char *s)
    {
    char h,l;
    h = s[0] - '0';
    l = s[1] - '0';
    if(h>9)
    h -= 7;
      if(l>9)
       l -= 7;
        return h*16+l;
    }

k = gethex(&s[j-1]);

jetzt sollte in k eine 7 stehen

Vielleicht kannst du mir ja mal auf die Sprünge helfen.
Gruß Helge
Gast #25197
Lesenswert?

stelle das Programm von mir über main. Und verwende in Deinem Teil den 
Aufruf k = gethex(&s[j-1]);

Dann sollte es gehen.
Gethex ist ein Unterprogramm und muß vor dem main deklariert sein.
Reiner




char gethex(char *s){
  char h,l;
  h = s[0] - '0';
  l = s[1] - '0';
  if(h>9)
    h -= 7;
  if(l>9)
    l -= 7;
  return h*16+l;
}


void main(void){   // hier kommt Dein main
  int k;
  j=0;

  s[j++]=rx_buffer[i++];
  s[j]=rx_buffer[i];       //kopiert 07

  k = gethex(&s[j-1]);

}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren