7Bit ASCII Datei Lesen und darstellen?



  • Hallo,

    hat hier jemand reinzufällig ein paar quellen zum lesen und darstellen
    von 7Bit ASCII Dateien. Also ich will eine Datei lesen in der Text
    im 7Bit format gespeichert ist, und disen in 8Bit konvertieren um
    ihn auf dem bildschirm darszustellen.

    Und wer jetzt sagt ich sei faul ... der hat recht 😉

    Danke fürs durchlesen

    PS: Das neue Design ist leicht Gewöhnungsbedürftigt



  • 7Bit to 8Bit schrieb:

    hat hier jemand reinzufällig ein paar quellen zum lesen und darstellen
    von 7Bit ASCII Dateien.

    google schon gefragt?



  • Ja habe ich,
    hab dabei aber nichts vernünftiges gefunden!



  • Häh? Da gibts nen Unterschied, ausser, dass bei 7Bit Encoding Bit 7 immer 0 ist? Das wär mir jetzt allerdings recht neu... 1 Byte hat nun immer 8Bit ob da allerdings alle genutzt sind bleibt allen freigestellt...

    -junix



  • naja, wenn man genau weiss, dass bit 8 immer ungenutzt ist, kann man natuerlich alles etwas verdichten, damit die datei 1/8 kleiner wird. so hab ich das frueher in pascal auch mit 64-farb bildern gemacht.



  • Klar, aber dann verwendet man ja so oder so keine Standard-Funktionen mehr um zu lesen/schreiben... Dann muss man hald die Bytes selber auseinandershiften...

    -junix



  • static int bit7[] = {
      64,163,36,165,232,233,250,236,242,199,10,216,
      248,13,197,229,63,95,63,63,63,63,63,63,63,63,
      63,63,198,230,223,202,32,33,34,35,164,37,38,
      39,40,41,42,43,44,45,46,47,48,49,50,51,52,
      53,54,55,56,57,58,59,60,61,62,63,161,65,66,67,
      68,69,70,71,72,73,74,75,76,77,78,79,80,
      81,82,83,84,85,86,87,88,89,90,196,214,209,
      220,167,191,97,98,99,100,101,102,103,104,105,
      106,107,108,109,110,111,112,113,114,115,116,
      117,118,119,120,121,122,228,246,241,252,224 };
    
    void B8ZuB7(short *binary, char *message, short n) {
            int i,j,k;
            int potenz;
    
            j=7;
            for(i=k=0; i<n; ++i, ++k) {
                    if(j==-1) {
                            j=7;
                            potenz=(int)pow(2.0,j)-1;
                            i ? --i : 0;
                            message[k]=binary[i] & potenz;
                    }
                    else
                        potenz=(int)pow(2.0,j)-1;
                        message[k]=(binary[i-1]>>(j+1) ) |  ((binary[i] & potenz)<<(7-j));
                        --j;
            }
            for(i=0; i<n; ++i)
                    message[i]=bit7[message[i]];
                    message[n]='\0';
    }
    

    Also du liest die Datei mit fgetc aus und speicherst die 8Byte Werte in ein
    short Array. Dieses Shortarray übergibst du als ersten param danach dein Zeil-
    array für die 8Bit Zeichen und am ende noch die anzahl der short array elemente.


Anmelden zum Antworten