string dual ausgeben



  • Hallo.
    Ich möchte eine Netzmaske welche als string eingegeben wurde (z.b. 255.255.255.0) als Dualzahl wieder ausgeben.
    Hab leider keine Ahnung wie ich das realisiere. Google hat mir auch nicht weitergeholfen. 😕

    Hat jemand n Tip??



  • #include <stdio.h>
    #include <stdint.h>
    
    int main() {
      char netmask_str[] = "255.255.255.0";
      unsigned int octets[4];
      uint32_t netmask = 0; /* unsigned 32 bit integer. Je nach Compiler kann der Typ leicht anders heißen */
      int i;
    
      /* Einzelne Oktette einlesen */
      sscanf(netmask_str, "%u.%u.%u.%u", &octets[0], &octets[1], &octets[2], &octets[3]);
    
      /* Ganze IP zusammenfügen */
      for(i = 0; i < 4; ++i) {
        netmask <<= 8;
        netmask += octets[i];
      }
    
      /* Binäre ausgabe: */
      for(i = 31; i >= 0; --i)
        putchar((netmask >> i & 1) ? '1' : '0');
      putchar('\n');
    
      return 0;
    }
    

Log in to reply