zeichen im String umwandeln

Gast #25191
...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 #25193
//-----------------------------------------------------------

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;
}



i = gethex(kette[k-1]);


kommst klar?
Reiner
Gast #25195
Hallo Reiner
Vielen Dank für den Tip.Gestern hat´s mich recht früh entschärft.Hab die 
ganze Woche bis nachts gesessen.
Das probiere ich heute gleich mal aus.
Gruß Helge
Gast #25196
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
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

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.