[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: IP- Nummer



Christoph Müller wrote:
> Am Sam, 2003-08-09 um 08.24 schrieb Markus Raab:
> 
>> [2]     1111111000000000000000000000001
>> [3]     12111111022002202002
>> [4]     1333000000000001
>> [5]     13330430101213
>> [6]     551232233345
> <schnip>...</schnip>
>> [95]    QFEX
>> [96]    P8Sax
>> [97]    O6o7{
>> [98]    N9E\
>> [99]    MHK
> 
> Gibt es ein Programm was eine Zahl zu einer beliebigen Basis
> geschriben darstellen kann - oder ist das alles im Kopf ausgrerechnet?

[0] hab ich für obige Ausgabe verwendet

mfg Markus


[0]
/*Author: Markus Raab
Lizenz: GPL v2*/
#include <stdio.h>
#include <string.h>

/**
 * Converts an in to any base
 * Returns NULL if an error accours*/
char * baseconvert (char * Store,       // Place to store the Solution
                long long Number,               // Number to Convert
                long long Base  // Basis to convert to
        )
{
        long long temp; // Temporäre Variablen
        long long i;            // Zählvariablen
        long long length;       // Länge der Zeichenkette
        
        if (Base < 2)   // nicht möglich
                return NULL;
        
        // generiere String
        i = 0;
        while (Number > 0)
        {
                temp = Number % Base;
                if (temp < 10)
                        temp  += '0';
                else temp += 'A' - 10;
                Store[i] = temp;
                
                Number /= Base; 
                i++;
                // if (i > 998)
                //      return NULL;    // Fehler!
        }
        Store[i] = '\0';
        length = strlen(Store);

        // String umdrehen
        for (i=0; i < ((length+1) / 2); i++)
        {
                temp = Store[i];
                Store[i] = Store[length - i - 1];
                Store[length - i - 1] = temp;
        }
        // Store [length - i] = '\0';
        // printf ("%s\n",Store);
        return Store;
}

int main()
{
        long long Zahl; // Zum Einlesen einer Zahl
        long long Basis;        // Zum Einlesen der Basis
        char Platz [100000];
        long long i;
        
        Zahl = 2130706433;      
        for (i=2; i<100; i++)
        {
                printf ("[%d]\t",i);
                printf ("%s\n", 
                        baseconvert (Platz, Zahl,i));
        }
        return 0;
}


-- 
Linux, the choice          | Demokratie ist Diskussion.  -- Th. G.
of a GNU generation   -o)  | Masaryk  
Kernel 2.4.21          /\  | 
on a i686             _\_v | 



Reply to: