String mit Hexwerten



  • Hi,

    ich habe einen C-String mit Hexadezimal werden. Also sowas:
    "2F\0"

    Ich frage mich aktuell, wie ich einen String in einen Datentyp wandeln kann, welches dann den Wert 0x2F hat (also z.B. 47).

    Jemand eine Idee, wie man das macht? danke





  • Vielen Dank

    Allerdings ich vergaß die stehen nicht zur Verfügung. Kein atoi, kein strtol, kein sscanf, praktisch nichts von den Standardfunktionen außer memcmp und memcpy.
    😞



  • ich habe einen C-String mit Hexadezimal werden

    Bitte? 😃



  • GmbH schrieb:

    Vielen Dank

    Allerdings ich vergaß die stehen nicht zur Verfügung. Kein atoi, kein strtol, kein sscanf, praktisch nichts von den Standardfunktionen außer memcmp und memcpy.
    😞

    Wieso stehen die nicht zur Verfügung.
    Ansonsten musst du den String byteweise durchgehen, 'nachsehen' welcher Wert an der aktuellen Position steht, welchen Stellenwert die Position hat und diesen Stellenwert berücksichtigend zum Ergebnis hinzuaddieren.



  • #include <stdio.h>
    
    int digit_to_int (char c)
    {
      int d = (c | 0x20) - '0';
      if (d > 9)
        return d - 39;
      return d;
    }
    
    int hex_to_int (char *s)
    {
      int res = 0;
      while (*s)
        res = res<<4 | digit_to_int(*s++);
      return res;
    }
    
    int main (void)
    {
      char *s = "2f";
      printf ("%x\n", hex_to_int(s));
    }
    


  • Danke ... in dieser Embedded Umgebung gibt es fast nichts.



  • Warum meintest Du denn, es wäre unwichtig (für uns), dass Du keine Standardbibliothek hast?



  • LordJaxom schrieb:

    Warum meintest Du denn, es wäre unwichtig (für uns), dass Du keine Standardbibliothek hast?

    ich glaube es ist tatsächlich so, daß mittlerweile die meisten C programme in einer ungebung rennen, in der die standard-lib nicht im vollen umfang verfügbar ist. eigentlich sollte jeder fragesteller hier erstmal seine beschränkungen nennen.
    🙂


Log in to reply