BIN-Datei einlesen?



  • Hi all,
    ich habe ein Programm geschrieben, das ein 3d BOOL-Array folgendermaßen abspeichert:

    BOOL myPicture[256][16][8];
    
    ...
    
    unsigned char a[16];
    int iPic,x,y;
    CFile file(sFilename, CFile::modeWrite | CFile::typeBinary | CFile::modeCreate, &error);
    for(iPic=0;iPic<256;iPic++){ 
        for(x=0;x<16;x++) {
    	    a[x]=0;
    	    for(y=7;y>=0;y--) {
    	        a[x] = a[x] << 1;
    	        if(myPicture[iPic][x][y] == TRUE) a[x] = a[x] | 1;
            }
            file.Write(&a[x],1);
        }
    }
    file.Close();
    

    So erhalte ich die gewünschte BIN-File.
    Jetzt stellt sich mir nur die Frage wie ich die datei wieder in mein 3d-BOOL-Array einlese?
    Kann mir da jemand nen Tip geben?
    Thx

    Gh05t



  • Hi,

    genauso wie du schreibst, bloß andersrum 😃

    CFile::Read(bool_variable, sizeof(BOOL));
    

    Sooft, bis das Dateiende erreicht ist.

    Grüße Rapha



  • Das ist mein Problem nicht...
    Wie bekomme ich die Daten wieder in mein Array? Ansatz habe ich schon:

    CFile file(sFilename, CFile::modeRead | CFile::typeBinary, &error);
    int iPic,x,y;
    unsigned char a;
    DWORD dwRead;
    for(iPic=0;iPic<256 && dwRead > 0;iPic++) 
    	for(x=0;x<16 && dwRead > 0;x++) {
    		dwRead = file.Read(&a,1);
    		for(y=7;y>=0 && dwRead > 0;y--){
    			//myPicture[iPic][x][y] = ??;
    		}
    	}
    

    In dem char a habe ich nun einen Zahlenwert zwischen 0 und 255 (8 Bit). Der soll auf die 8 Felder in der 3. Dimension meines Arrays bitweise verteilt werden. Nur weis ich nicht wie ich das machen soll (außer mit SEHR unschönen if abfragen 😉 )


Anmelden zum Antworten