4 char in 1 int laden



  • Hallo zusammen,
    ich weiß leider nicht genau wie man das bezeichnet was ich mache / vor habe deswegen der etwas seltsame Titel

    char A[64];
    char B[64];
    
    //statt 64 Kopiervorgänge möchte ich nur 16
    for (int i = 0; i < 16; i++){
       ((int *) A)[i] = ((int *) B)[i];
    }
    

    Ok das funktioniert soweit, es ist hoffentlich auch verständlich was ich vor habe, nämlich 4 Byte anstatt nur 1 Byte auf einmal zu kopieren

    wie sieht der Code aus wenn ich ein 2D Array habe? Hat jemand eine Idee?

    char A[2][32];
    	char B[64];
    
    	//statt 64 Kopiervorgänge möchte ich nur 16
    	for (int j = 0; j < 2; j++){
    		for (int i = 0; i < 8; i++){
    		   ((int *) A)[j][i] = ((int *) B)[j*8+i]; //? funktioniert nicht
                       //error C2109: Index erfordert ein Array oder einen Zeigertyp
    		}
    	}
    


  • char A[2][32];
        char B[64]={0,};
    
        //statt 64 Kopiervorgänge möchte ich nur 16
        for (int j = 0; j < 2; j++){
            for (int i = 0; i < 16; i++){
               ((int(*)[32]) A)[j][i] = ((int *) B)[j*8+i]; // funktioniert 
            }
        }
    

    😉



  • deine Lösung gefällt mir! Setze ich so um.
    hab in der Zwischenzeit auch ein wenig probiert.
    So geht das auch:

    //statt 64 Kopiervorgänge möchte ich nur 16
    	for (int j = 0; j < 2; j++){
    		for (int i = 0; i < 8; i++){
    		   ((int *) A)[j*8+i] = ((int *) B)[j*8+i];
    
    		}
    	}
    

Anmelden zum Antworten